|zyciis| C#4.0传说中的新特性:安全的null延迟赋值操作符,但真实出来没有,那我们如何来实现这个功能有点变态 ,
/*************************************
* 让我空欢喜的 C#4.0的4个新特性:安全的null延迟赋值操作符
* 但真正的VS2010我分现不支持这个特性,在Microsoft论坛里面询问他们说没有这个新功能
* 但这个功能是我对4.0最看中的,其他的新特性我感觉对我没有必要
* 那现在没有这个特性,我如何更改我的类,来实现这个功能呢?
* 谢谢
* 以下为示例
* ***********************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication3
{
/// <summary>
/// 如生明一个员工类
/// </summary>
public class Employee
{
public string Code { get; set; }
public string Name { get; set; }
}
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Employee jerry = null;
Employee tom = null;
jerry = new Employee()
{
Code = "107",
Name = "Jerry Zhang",
};
object jerryName = jerry.Name;
object tomName = tom.Name;
//object tomName = tom.Name;
//这一行会报未将对象引用设置到对象的实例。
//那我更改我的Employee类,最好是承继于某个类后
//访问tom.Name,如果tom没有实现的话不是报错,而是反回null
//万分感谢
}
}
}
解决方案
首先我要声明,C# 4.0 中并没有有关安全的 Null 传递的特性。您是从哪里得到这个信息的?
关于这个问题,可以用 Nullable<T> 类型来实现。但 Nullable<T> 仅针对于值类型。对于任何引用类型,NullReferenceException 是一定要抛出的。因为如果没有这个限制,C# 就没有所谓的类型安全。
在程序中捕获 NullReferenceException 并阻止其向外抛出的设计方案是不可取的,否则,任何代码引起的空引用都将无法被调试,并且,这会导致程序产生奇怪的行为。
用户评论