C#は空の文字列配列を宣言します


152

空の文字列配列を宣言する必要があり、このコードを使用しています

string[] arr = new String[0]();

しかし、「メソッド名が必要です」というエラーが表示されます。

どうしましたか?


2
空の配列が必要なのはなぜですか?あなたは何をしようとしているのですか?
T氏

7
@MrT。質問にはあまり関係ありません。
ジェームズ

1
@ジェームズ-彼がやろうとしていることを何でも行うよりエレガントな方法があるかもしれません。
T氏2013年

4
@aquanat-回答はすでに受け入れられており、コードやその背後にあるロジックがわかりませんが、空の配列ではなくnullを返さず、戻り値がnullまたはない。もっとエレガントで、読みやすく、効率的だと思います。
T氏

2
nullを返さない理由は、メソッドのコンシューマがnullをチェックする必要があるためです。たとえば、メソッドのコンシューマは戻り値をforeachに入れることができ、空の配列が返されても問題はありません。ただし、nullが返された場合、戻り値を繰り返す前にnullのチェックが必要です
JAB

回答:


265

これを試して

string[] arr = new string[] {};

1
みんなに感謝します...理由は聞かないでください。しかし、唯一の方法は次のとおりでした:string [] arr = new String [0] as string [];
aquanat 2013年

2
Atishのメソッドが機能し、ifステートメントで割り当てた場合に初期化されていない変数の使用に関するVisual Studioの不満を解消
Joe

1
その他のオプションc# Array.Empty<string>()
Jannick Breunis

68

構文が間違っています:

string[] arr = new string[]{};

または

string[] arr = new string[0];

1
なぜあなたの例では文字列が大文字と小文字の両方であるのですか?
それはNotALieです。

1
@newStackExchangeInstance、問題からコードを「そのまま」コピーしただけです。どちらの行も問題なくコンパイルできますが、次の1つのスタイルの方が良いことに同意します。
Andrei 2013年

15

.net 4.6を使用している場合、新しい構文を使用できます。

using System;  // To pick up definition of the Array class.

var myArray = Array.Empty<string>();

ナイストリック!また、IList <T>でも機能します。IList <string> x = Array.Empty <string>();
ZunTzu 2017年


8

配列のコンストラクタは異なります。空の文字列配列を作成するいくつかの方法を次に示します。

var arr = new string[0];
var arr = new string[]{};
var arr = Enumerable.Empty<string>().ToArray()

(申し訳ありませんが、モバイルで)


1

これらの巻き毛のことは覚えにくいことがあります。そのため、優れたドキュメントがあります

// Declare a single-dimensional array  
int[] array1 = new int[5];

回答は一般的な目的を果たすものであり、特定の質問に対する回答ではないため、この回答を編集する必要はありません。「配列を宣言して初期化するための構文は何ですか」と答え、私が投稿したリンクからの引用です。OPは置き換えることができintstring、彼が好きならば。
CodeCaster 2013年

1

構文が無効です。

string[] arr = new string[5];

これarrにより、この配列のすべての要素がである文字列の参照配列が作成されますnull。(文字列は参照型であるため

この配列から要素を含んでいるarr[0]arr[4]newオペレータは、アレイを作成し、デフォルト値に配列要素を初期化するために使用されます。この例では、すべての配列要素がに初期化されていnullます。

Single-Dimensional Arrays (C# Programming Guide)


みんなに感謝します...理由は聞かないでください。しかし、唯一の方法は次のとおりでした:string [] arr = new String [0] as string [];
aquanat 2013年

0

空の配列を作成する必要がある場合、これを行うことができます:

string[] arr = new string[0];

サイズがわからない場合は、次のList<string>ように使用することもできます

var valStrings = new List<string>();

// do stuff...

string[] arrStrings = valStrings.ToArray();

ごめんなさい。誤った編集で誤ってあなたの投稿を台無しにしました。
SonerGönül2013年

-3

以下は正常に動作するはずです。

string[] arr = new string[] {""};

5
空の文字列である要素が1つ含まれているため、これは空の配列ではありません。arr.Length()は1を返します
ギジェルモプランディ

これは空の配列ではない可能性がありますが、この答えはヌルセーフです。ありがとう!1アップ!
hubert17
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.