3

たとえば、私が書いたとき:

Char[] test = new Char[3] {a,b,c};
test[2] = null;

null不可能な値型であるため、nullを「char」に変換できないと表示されます

そのcharの配列を空にする必要がある場合、解決策はありますか?

4

6 に答える 6

10

null許容文字を使用します。

char?[] test = new char?[3] {a,b,c};
test[2] = null;

欠点は、配列にアクセスするたびに値を確認する必要があることです。

char c = test[1];  // illegal

if(test[1].HasValue)
{
    char c = test[1].Value;
}

または、「魔法の」文字値を使用して、次nullのように表すことができ\0ます。

char[] test = new char[3] {a,b,c};
test[2] = '\0';
于 2012-10-10T19:54:55.840 に答える
3

エラーが示すように、charは値型であるため、これを行うことはできません。

あなたはこれを行うことができます:

char?[] test = new char?[3]{a,b,c};
test[2] = null;

null許容文字を使用しているためです。

null許容型を使用したくない場合は、配列内の空のセルを表す値を決定する必要があります。

于 2012-10-10T19:54:37.313 に答える
2

エラーが示すように、charはnull許容ではありません。default代わりに使用してみてください:

test[2] = default(char);

これは本質的にヌルバイト' \0'であることに注意してください。nullこれは、インデックスの値を提供しません。本当にシナリオを検討する必要がある場合はnull、ここでの他の回答が最も効果的です(null許容型を使用)。

于 2012-10-10T19:54:18.577 に答える
2

あなたがすることができます:

test[2] = Char.MinValue;

コードのどこかで値が「null」かどうかを確認するテストがある場合は、次のようにします。

if (test[someArrayIndex] == Char.MinValue)
{
   // Do stuff.
}

また、Char.MinValue == default(char)

于 2012-10-10T19:55:58.470 に答える
1

テストをnullに設定できます

test = null;

しかし、それはcharであるため、test[2]ではありません-したがって値型

于 2012-10-10T19:54:18.993 に答える
0

あなたの質問の理由はわかりませんが、代わりに を使用するList<>と、次のように言うことができます。

List<char> test = new List<char> { a, b, c, };
test.RemoveAt(2);

これにより、 の長さ ( Count) が変更されList<>ます。

于 2012-10-10T20:12:53.013 に答える