banner
Matrix

Matrix

Abyss
email
github

小小的C# - .?

.?操作符是一種更安全地處理可能為 null 對象的機制,從而避免空指針異常,類似於 TypeScript,Swift 都有類似的機制。

當使用.?時,如果訪問對象為 null,則整個表達式為 null 且不拋出異常,否則正常訪問。

例子#

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public string City { get; set; }
    public string Street { get; set; }
}

如果需要安全訪問:

string city = person?.Address?.City;

此時,如果 person 或 person.Address 為 null,整個表達式都會返回 null,否則它將返回 person.Address.City 的值。這就避免了當 person 或 person.Address 為 null 時,直接訪問 person.Address.City 會導致的 NullReferenceException

常用場景#

  • 方法調用:
person.PrintName();
  • 事件處理
person?.OnNameChanged?.Invoke(this, EventArgs.Empty);

//todo 事件處理

  • 元素訪問
string firstAddress = address?[0]?.City;

// todo ?

  • ??結合使用同提供默認值
string city = person?.Address?.City ?? "Unknown";

// todo ??

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。