现在的位置: 首页 > 综合 > 正文

int,float等基础类型终于可以赋为null了

2014年04月12日 ⁄ 综合 ⁄ 共 993字 ⁄ 字号 评论关闭

好象有面向对象编程语言以来,对于基础类型数据,如int、float等,不支持为其赋值为null,我们为了将其表示为null,通常是赋予一个特定的值,如int则赋值为-1。现在在c#2.0中有一个很好的解决方法:就是使用基础类型+?,比如int?,float?,

下面是msdn的相关文章:

ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/088b1f0d-c1af-4fe1-b4b8-196fd5ea9132.htm

如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。

Collapse 图像备注

可空类型可以包含值,或者可以是未定义的。?? 运算符定义当可空类型分配给非可空类型时返回的默认值。如果在将可空类型分配给非可空类型时不使用 ?? 运算符,将生成编译时错误。如果使用强制转换,并且当前未定义可空类型,将发生 InvalidOperationException 异常。

有关更多信息,请参见可为空的类型(C# 编程指南)

Collapse 图像示例

  CopyCode image复制代码
// nullable_type_operator.cs
using System;
class MainClass
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        // ?? operator example.
        int? x = null;

        // y = x, unless x is null, in which case y = -1.
        int y = x ?? -1;

        // Assign i to return value of method, unless
        // return value is null, in which case assign
        // default value of int to i.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // ?? also works with reference types. 
        // Display contents of s, unless s is null, 
        // in which case display "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

抱歉!评论已关闭.