C#中单问号(?)和双问号(??)的用法整理
一、单问号(?)
在C#中,单问号(?)用来判断对象是否为null。如果对象为null,则返回null;否则返回对象的值。
1.1. 使用示例
int? num = null;
int? num2 = 7;
Console.WriteLine(num?.ToString()); // 输出null
Console.WriteLine(num2?.ToString()); // 输出7
二、双问号(??)
在C#中,双问号(??)用来提供默认值。如果左边的值为空,则返回右边的值;否则返回左边的值。
2.1. 使用示例
int? num1 = null;
int num2 = 7;
Console.WriteLine(num1 ?? 0); // 输出0
Console.WriteLine(num2 ?? 0); // 输出7
需要注意的是,双问号(??)只能在左边的值为null或者Nullable类型时使用。如果左边的值不为null或不是Nullable类型,则不能使用双问号(??)。
三、单问号和双问号的组合应用
3.1. 使用示例
int? num1 = null;
int num2 = num1 ?? 0;
Console.WriteLine(num2); // 输出0
string str1 = null;
string str2 = str1?.ToLower() ?? "Default";
Console.WriteLine(str2); // 输出Default
Contact contact = null;
string phone = contact?.PhoneNumber ?? "DefaultPhone";
Console.WriteLine(phone); // 输出DefaultPhone
在上述的代码示例中,我们使用了单问号和双问号的组合应用,来判断对象是否为null,并提供默认值。其中:
- 示例1:当num1为null时,将num2的值设为默认值0;
- 示例2:当str1为null时,将str2的值设为默认值"Default";
- 示例3:当contact或PhoneNumber为null时,将phone的值设为默认值"DefaultPhone"。
四、注意事项
在使用单问号和双问号时,需要注意以下几点:
- 单问号只能判断对象是否为null,不能提供默认值;
- 双问号只能提供默认值,不能判断对象是否为null;
- 组合应用时,左边的值必须为Nullable类型或可能为空的类型,右边的值必须与左边的类型相同或可以隐式转换为左边的类型;
- 不要滥用单问号和双问号,过多的使用会使代码难以阅读和维护。
五、总结
本文介绍了C#中单问号和双问号的使用方法和注意事项,希望能对大家有所帮助。在实际的开发中,可以根据不同的场景选择合适的方式来使用单问号和双问号,提高代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中单问号(?)和双问号(??)的用法整理 - Python技术站