问号“?”在编程中扮演着多种角色,包括在条件语句中的使用。但是,它也出现在值类型中,例如 public int? myProperty
。在这种情况下,这个问号有什么作用呢?
可空类型
值类型后面的问号表示它是一个可空类型。可空类型是 System.Nullable
结构的特殊实例,它可以容纳底层类型的整个有效值范围,以及一个特殊的空值。
此功能在处理数据库场景或其他某些元素可能故意缺少值的数据源时特别有用。例如,允许布尔值的数据库表列可能包含 true、false 或 null。
示例代码
考虑以下代码片段:
<code class="language-csharp">class NullableExample { static void Main() { int? num = null; // 判断 HasValue 是否为 true if (num.HasValue) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } // 如果 num 为 null,则赋值默认值 0 int y = num.GetValueOrDefault(); // 如果 num.HasValue 为 false,则抛出 InvalidOperationException try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } }</code>
在此,num
变量被定义为可空整数 (int?
),可以保存整数或 null 值。HasValue
属性允许我们检查变量是否包含有效值。如果 HasValue
为 true,我们可以使用 num.Value
获取实际值。否则,num
被认为是 null。
以上是C# 值类型(例如'int?”)中的问号意味着什么?的详细内容。更多信息请关注PHP中文网其他相关文章!