运营商的意义?在C#中的一个对象之后

时间:2013-12-28 07:37:56

标签: c# .net operators

我试图在C#中找到符号/运算符?的含义。

用法示例:

private Point? _point = null;

我认为必须对null值执行某些操作。

当然我查看了MSDN C# Operators页面,但在那里找不到答案。

有人可以给我一个链接或解释这个操作符吗?

2 个答案:

答案 0 :(得分:11)

这是Nullable<T>的简写,即Point?Nullable<Point>相同。这允许您为值类型分配空值。

请参阅Using Nullable Types上的MSDN参考。

注意,在这种情况下,它不是运算符,而是一种简写语法。

答案 1 :(得分:3)

添加到上一个答案

以简单的方式,通常在C#中,我们有值类型引用类型,引用类型具有引用,并且可以分配空值但不能分配值类型null因为它们没有任何引用,通过术语引用它只是32或64位数字,它不是引用对象所在进程的虚拟内存空间的地址,而指针是进程的实际虚拟内存空间提到对象生命,C#既有指针(不安全)也有引用的概念。

回过头来看,T?Nullable<T>

的语法糖

我们使用它的很大原因是sql接受int,float或C#中值类型的任何类型的null值,所以当有人试图从sql获取值 int 但是 null ,当我们尝试在值类型上输入null时会出现错误,因此解决方案是可为空的类型。

<强>参考文献:

  1. http://blogs.msdn.com/b/ericlippert/archive/2009/02/17/references-are-not-addresses.aspx
  2. http://blogs.msdn.com/b/ericlippert/archive/2012/03/26/null-is-not-false.aspx