首页 >后端开发 >C++ >C# 值类型(例如'int?”)中的问号意味着什么?

C# 值类型(例如'int?”)中的问号意味着什么?

Barbara Streisand
Barbara Streisand原创
2025-01-26 08:51:10753浏览

What Does the Question Mark Mean in C# Value Types (e.g., `int?`)?

C# 值类型中的问号:理解可空类型

问号“?”在编程中扮演着多种角色,包括在条件语句中的使用。但是,它也出现在值类型中,例如 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn