C#で配列リテラルを返す方法


89

私は次のコードを試しています。エラーのある行が指摘されています。

int[] myfunction()
{
    {
      //regular code
    }
    catch (Exception ex)
    {                    
       return {0,0,0}; //gives error
    }
}

文字列リテラルのような配列リテラルを返すにはどうすればよいですか?


4
また、C#に実際には配列リテラルがないことも価値がありませんが、受け入れられた回答が参照する配列初期化構文があります。リテラルは、直接シリアル化でき、constフィールドに割り当てることができるという点で特別です。これは、配列初期化構文には当てはまりません。
cwharris 2016

回答:


167

次のintような配列を返します。

return new int [] { 0, 0, 0 };

配列を暗黙的に入力することもできます。値int[]のみが含まれているため、コンパイラは配列を推測しintます。

return new [] { 0, 0, 0 };

6
うわー、暗黙のうちに配列を入力できるとは知りませんでした。+1
クリスシンクレア

1
私はそれnew int [] {0,0,0}もうまくいくことがわかりました。私の意見ではもっとはっきりしているでしょう。
sgarg 2014年

3
@sgargそれは答えと同じようです。そして、私は同意しません。配列の暗黙的な型指定は、定数を浮動小数点に変更すると、正しい配列型が自動的に取得されることを意味します。
NetMage 2017年

13

Blorgbeardは正しいですが、新しい.NET4.0タプルクラスの使用を検討することもできます。返品するアイテムの数が決まっていると、作業が簡単になることがわかりました。配列内の3つのアイテムを常に返す必要がある場合と同様に、3整数のタプルはそれが何であるかを明確にします。

return new Tuple<int,int,int>(0,0,0);

または単に

return Tuple.Create(0,0,0);

2
あなたがアイテムの可変数を持っていますが、あなたも行うことができますいくつかの追加機能が必要な場合:return new List<int>(new int[]{0,0,0});
デイブ・

1
@デイブはList<int>(Enumerable.Repeat(0, 3))良くないだろうか?
NetMage 2017年

@NetMage確かに、アイテムの数を変えたいのならもっといいでしょう。
デイブ

10

配列のサイズが固定されていて、ゼロで満たされた新しい配列を返したい場合

return new int[3];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.