私はモバイルプログラミングを理解しようとしていますが、文字を数字に変換することになっているメソッドのこのコードに出くわしました。コードは機能していますが、私の質問は「?」の目的は何ですか。intの後。
static int? Translate(char c)
{
if ("ABC".Contains(c))
return 2;
else if ("DEF".Contains(c))
return 3;
else if ("GHI".Contains(c))
return 4;
else if ("JKL".Contains(c))
return 5;
else if ("MNO".Contains(c))
return 6;
else if ("PQRS".Contains(c))
return 7;
else if ("TUV".Contains(c))
return 8;
else if ("WXYZ".Contains(c))
return 9;
return null;
}
?
Nullable<>
クラスのシンタックスシュガーです-あなたの場合int?
は実際にはNullable<Int32>
です。
このクラスの目的は、値型がnull
値を表すことができるようにすることです。これは、通常はできないためです(C ++用語では「スタック」オブジェクトです)。ボクシングが含まれますが、必要な場合にのみ使用してください。パフォーマンスコストが発生します。
また、これをnull
(return
あなたの場合は、または通常の割り当てを介して)に設定しても、実際には参照がに設定されないことに注意してくださいnull
。これは、実際にそれをに設定するコンパイラの魔法new int?()
であり、HasValue
プロパティがに設定されたインスタンスfalse
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加