c# >運算子c# c#加法 - 試圖理解? (空條件)運算符在C#中




1 Answers

  • list?.Count > 0 :在這裡你比較一個int? 到一個int ,產生一個bool ,因為解除比較運算符返回一個bool ,而不是一個bool?
  • a?.B :在這裡,你有一個bool? 。 但是, if需要bool
c#和 null

我有這個非常簡單的例子:

class Program
{
    class A
    {
        public bool B;
    }

    static void Main()
    {
        System.Collections.ArrayList list = null;

        if (list?.Count > 0)
        {
            System.Console.WriteLine("Contains elements");
        }

        A a = null;

        if (a?.B)
        {
            System.Console.WriteLine("Is initialized");
        }
    }
}

if (list?.Count > 0)完全編譯,這意味著如果listnull ,則默認情況下表達式Count > 0將變為false

但是,行if (a?.B)拋出一個編譯器錯誤,說我不能隱式轉換bool? bool

為什麼一個與另一個不同?




Related