たとえば、私が書いたとき:
Char[] test = new Char[3] {a,b,c};
test[2] = null;
null不可能な値型であるため、nullを「char」に変換できないと表示されます
そのcharの配列を空にする必要がある場合、解決策はありますか?
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';
エラーが示すように、charは値型であるため、これを行うことはできません。
あなたはこれを行うことができます:
char?[] test = new char?[3]{a,b,c};
test[2] = null;
null許容文字を使用しているためです。
null許容型を使用したくない場合は、配列内の空のセルを表す値を決定する必要があります。
エラーが示すように、char
はnull許容ではありません。default
代わりに使用してみてください:
test[2] = default(char);
これは本質的にヌルバイト' \0
'であることに注意してください。null
これは、インデックスの値を提供しません。本当にシナリオを検討する必要がある場合はnull
、ここでの他の回答が最も効果的です(null許容型を使用)。
あなたがすることができます:
test[2] = Char.MinValue;
コードのどこかで値が「null」かどうかを確認するテストがある場合は、次のようにします。
if (test[someArrayIndex] == Char.MinValue)
{
// Do stuff.
}
また、Char.MinValue == default(char)
テストをnullに設定できます
test = null;
しかし、それはcharであるため、test[2]ではありません-したがって値型
あなたの質問の理由はわかりませんが、代わりに を使用するList<>
と、次のように言うことができます。
List<char> test = new List<char> { a, b, c, };
test.RemoveAt(2);
これにより、 の長さ ( Count
) が変更されList<>
ます。