簡體   English   中英

僅當布爾值不為null時,才為布爾值分配不為null的值

[英]Assign non nullable value in boolean only if its non null

我有一個對象,該對象具有一個名為NameIndicator的布爾字段(外部合同1)。 在我的代碼中,我將布爾值“ IsIndicated”設置為可為空。

如何檢查null並僅在非null時才賦值?

我目前收到以下代碼的編譯時錯誤,顯然是將nullable設置為non nullable

 personDetails.Name= new Name_Format()
                    {
                        NameSpecified = true,
                        NameIndicator = contract.IsIndicated
                    };

如果要為null分配一個特定的值,否則要分配一個值,則可以使用null合並運算符

personDetails.Name= new Name_Format()
{
  NameSpecified = true,
  NameIndicator = contract.IsIndicated ?? true
};

語義與

personDetails.Name = new Name_Format()
{
  NameSpecified = true,
  NameIndicator = contract.IsIndicated == null ? true : contract.IsIndicated.Value
};

除了它當然只調用IsIndicated一次。

如果您希望運行時為您選擇默認值,則可以

personDetails.Name = new Name_Format()
{
  NameSpecified = true,
  NameIndicator = contract.IsIndicated.GetValueOrDefault()
};

在這種情況下,它將選擇“ false”,因為這是布爾值的默認值。

如果您不希望任何值為null的事件,那么可以使用if語句:

if (contract.IsIndicated != null)
{
  personDetails.Name = new Name_Format()
  {
    NameSpecified = true,
    NameIndicator = contract.IsIndicated.Value
  }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM