none
for文の中で関数や配列またはコレクションは使えないのでしょうか? RRS feed

  • 質問

  • 超初心者です。VBなら

    For i As Integer=0 To elm.Length-1

        if elm(i)="" then

    をC#で書き直し、

    for (int i = 0; i <= elm.Length; i++)

        if (elm(i) != ""

    と使用としたところ「メソッド名が必要です。」となります。

    何か足りないものがあるのでしょうか。

    よろしくお願いします。

    2018年4月1日 0:21

回答

  • C# で配列の要素にアクセスするには elm(i) という風ではなく、elm[i] と [] を使います。また、配列は添え字 0 で 1 番目の要素にアクセスとなるため、Length で得られる配列サイズ - 1 までのループで OK です。

    for (int i = 0; i < elm.Length; i++)
    {
        if (elm[i] != "")
        {
            ...
        }
    }

    参考サイト: http://ufcpp.net/study/csharp/st_array.html

    配列の要素すべてにアクセスするために foreach ステートメントも使えます。詳しくは下記のページをご参照ください。

    https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays

    • 編集済み kenjinoteMVP 2018年4月1日 1:04
    • 回答としてマーク nebokken 2018年4月1日 1:21
    2018年4月1日 0:49
  •     if (elm(i) != ""

    C#では配列の要素アクセスには [ ] を使用します。elm[i] のように。

    また、お書きになったコードが本当にこの通りなら、括弧と閉じ括弧が正しく対応できていませんね。

    あと、C#ではforやifなどに続く文はできる限り { } でブロックにすることをお薦めします。

    for (int i = 0; i < elm.Length; i++)
    {
        if (elm[i] != "")
        {
    こういうバグを書いちゃったりするので。
    • 回答としてマーク nebokken 2018年4月1日 1:20
    2018年4月1日 0:57
  • 添え字周りはすでに指摘があるとして、少し脱線気味に。

    VB のコードは = なのに、C# は != にしてあるのは意図的ですか?
    C# で「同じであること」の比較演算子は == となりますのでご注意ください。

    if (elm[i] == "")
    {
      // 空文字列の時の処理
    }

    2018年4月1日 1:07
    モデレータ

すべての返信

  • C# で配列の要素にアクセスするには elm(i) という風ではなく、elm[i] と [] を使います。また、配列は添え字 0 で 1 番目の要素にアクセスとなるため、Length で得られる配列サイズ - 1 までのループで OK です。

    for (int i = 0; i < elm.Length; i++)
    {
        if (elm[i] != "")
        {
            ...
        }
    }

    参考サイト: http://ufcpp.net/study/csharp/st_array.html

    配列の要素すべてにアクセスするために foreach ステートメントも使えます。詳しくは下記のページをご参照ください。

    https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays

    • 編集済み kenjinoteMVP 2018年4月1日 1:04
    • 回答としてマーク nebokken 2018年4月1日 1:21
    2018年4月1日 0:49
  •     if (elm(i) != ""

    C#では配列の要素アクセスには [ ] を使用します。elm[i] のように。

    また、お書きになったコードが本当にこの通りなら、括弧と閉じ括弧が正しく対応できていませんね。

    あと、C#ではforやifなどに続く文はできる限り { } でブロックにすることをお薦めします。

    for (int i = 0; i < elm.Length; i++)
    {
        if (elm[i] != "")
        {
    こういうバグを書いちゃったりするので。
    • 回答としてマーク nebokken 2018年4月1日 1:20
    2018年4月1日 0:57
  • 添え字周りはすでに指摘があるとして、少し脱線気味に。

    VB のコードは = なのに、C# は != にしてあるのは意図的ですか?
    C# で「同じであること」の比較演算子は == となりますのでご注意ください。

    if (elm[i] == "")
    {
      // 空文字列の時の処理
    }

    2018年4月1日 1:07
    モデレータ
  • 配列は[]だったのですか。道理で配列を宣言するとき「string[]」としてたのでした。納得です。

    様々なご指摘ありがとうございました。VBで「If elm(i)<>""」と書くのを「=」にしてしまいました。「{}」もなくてもおわかりいただけるだろうと省略してしまいました。以上弁解でした。

    皆さんありがとうございました。

    2018年4月1日 1:20