2017-01-07 13 views
0

null条件付き演算子(?)を使用しようとしていますが、正確にはどこに配置するのかが分かりませんseparators.Contains(textLine[(index - 1)])。私は "(textLine[(index - 1)])がヌルでないならば、進める"と言いたい。手助け?c#NULL条件付き演算子

+0

をあなたは "Containsメソッドを呼び出して、式がnullでない場合、そうしない" を意味するのですか? –

+0

..............はい – user7388546

+0

あなたのプログラムは他の場合どのように動作するのですか? –

答えて

0

あなたがあればメソッドが含まれて呼び出していないことを意味場合配列の値がnullの場合は、最初にチェックする必要があります。 LINQ使用

// requires possible bounds checking 
char? test = textLine?[index-1]; 
if (test != null && separaters.Contains(test.Value)) 

// does not require bounds checking 
char test = textLine?.Skip(index-1).FirstOrDefault() ?? default(char); 
if (test != default(char) && separaters.Contains(test)) 
+0

最初にcharをnullにすることはできません。代わりに 'textLine?[index-1];'と書くのですか?私は彼がテキスト行がnullになるものであれば、私はわからないだったか、配列の値はあなたがLINQを使用することができ –

+0

いや。 char test = textLine?.Skip(index-1).FirstOrDefault()??デフォルト(char)。その後、デフォルト(char)に対してテストします – user7388546

+0

@今実現ものです –

1

MSDN Docsの第二の例は、あなたの質問に答える必要があります。

Customer first = customers?[0]; // null if customers is null 
4

これは仕方Null-conditional Operators作品ではありません。

null条件付き演算子は、プレフィックス「?」でマークされた親の1つが例外の代わりにnullを返すだけです。 == nullの

例である:あなたが必要なもの

var g1 = parent?.child?.child?.child; 
if (g1 != null) // TODO 

は、IFシンプルでは、条件

if (!string.IsNullOrEmpty(textLine)) 
{ 
    // Work here 
}