ホームページ > バックエンド開発 > C++ > なぜ「?10:null」は、c#でnullableタイプで失敗するのですか?

なぜ「?10:null」は、c#でnullableタイプで失敗するのですか?

Susan Sarandon
リリース: 2025-01-28 22:10:10
オリジナル
1006 人が閲覧しました

Why Does

3つの元コンピューティングシンボルと空のタイプ:「?10:null」の謎を解きます

空のタイプを扱うとき、それらが式の他のデータ型と互換性があることを理解します。一般的なシナリオは、偶発的なエラーを引き起こす可能性があります。つまり、3つの-YUANコンピューティングシンボルは、空のタイプと非空のタイプと一緒に使用されます。

次のコードフラグメントを検討してください:

int? x = GetBoolValue() ? 10 : null;
ログイン後にコピー
ここでの目標は次のとおりです。

を返す場合、値10は空の整数に割り当てられます。ただし、コンパイラにはエラーがマークされます:GetBoolValue() true x<解>質問の解釈xnull

このエラーは、3つのYUAN式の非一致タイプの問題を強調しています。左式<返>は
<code>错误:无法确定条件表达式的类型,因为在 int 和 <null> 之间没有隐式转换。</code>
ログイン後にコピー
値を返し、解析は

またはです。正しい表現は、2つの式を組み合わせようとします:

<这>、これはリテラルボリュームです(GetBoolValue()ではありません)。 bool true<这>、これは空の言葉です。 false

    コンパイラは最初に正しい式を評価しようとします。 <面>literal
  • と空のキャラクター10に遭遇します、それらは互換性がありません。 intおよび<间>隠された変換を定義しないため、不完全な種類のタイプが生じます。 int?
  • <决>タイプを解くことは一致しません
  • null この問題を解決するには、正しい式を空のタイプのタイプと互換性がある必要があります。いくつかの方法があります:<:>

<字>は文字通りint10nullに変換しました int null

<空>空のタイプまたはデフォルト値を使用します:

    <式>暗黙的な変換
  • 受け入れられる答えに記載されている隠された変換は次のとおりです。 int?

    <<> to
      x = GetBoolValue() ? (int?)10 : null;
    ログイン後にコピー
  • 空のタイプ
  • は、

    に暗黙的に変換できます。

    <<> to
      x = GetBoolValue() ? 10 : (int?)null;
      x = GetBoolValue() ? 10 : default(int?);
    ログイン後にコピー
    :non -emptyは、空に変換できます

    正しい式のタイプと互換性があることにより、タイプが問題と一致しないという問題を解決し、

    返品値に従って適切な値を分配できます。

    以上がなぜ「?10:null」は、c#でnullableタイプで失敗するのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート