通常,问号的主要用途是有条件的,x ? "yes" : "no"
.
但是我已经看到了它的另一个用途,但是找不到?
例如运算符的这种用法的解释.
public int? myProperty
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud) 显然,Nullable<int>
和int?
在数值上相等.有没有理由选择其中一个?
Nullable<int> a = null;
int? b = null;
a == b; // this is true
Run Code Online (Sandbox Code Playgroud) 通过C#在Boxing/Unboxing值类型上从CLR中提取...
在Boxing上:如果可空实例不为null,则CLR将该值从可空实例中取出并将其装箱.换句话说,值为5的Nullable <Int32>被装入一个值为5的boxed-Int32.
在取消装箱:取消装箱只是获取对盒装对象的未装箱部分的引用的行为.问题是盒装值类型不能简单地拆箱成该值类型的可空版本,因为盒装值中没有boolean hasValue字段.因此,当将值类型拆箱到可空版本时,CLR必须分配Nullable <T>对象,将hasValue字段初始化为true,并将value字段设置为盒装值类型中的相同值.这会影响您的应用程序性能(拆箱期间的内存分配).
为什么CLR团队为Nullable类型经历了这么多麻烦?为什么不首先将它装入Nullable <Int32>?
可能重复:
?C#中的(可空)运算符
在System.Windows.Media.Animation中,我看到代码如下:
public double? By { get; set; }
Run Code Online (Sandbox Code Playgroud)
那是什么?运营商在这做?有人知道吗?
我试图谷歌这个,但如果你不知道它的名字是什么,很难搜索运算符.我检查了操作员页面(http://msdn.microsoft.com/en-us/library/6a71f45d(v=vs.80).aspx)但是?运营商没有列在那里.
谢谢!
可能重复:
?C#中的(可空)运算符
那是什么?像这样使用:
class Test
{
public int? aux;
}
Run Code Online (Sandbox Code Playgroud)
对于更熟悉c#的人来说,这可能是一个简单的问题,但我真的不知道要搜索什么.我读了一个解释但没有完全理解它.我也有兴趣知道"??" 运营商.关于它们有用的一些例子将会有很大的帮助.