今天热门
热点:

|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 并阻止其向外抛出的设计方案是不可取的,否则,任何代码引起的空引用都将无法被调试,并且,这会导致程序产生奇怪的行为。

www.zrccd.nettrue/topics/20180113/67897.htmlTechArticle|zyciis| C#4.0传说中的新特性:安全的null延迟赋值操作符,但真实出来没有,那我们如何来实现这个功能有点变态 , /************************************* * 让我空欢喜的 C#4.0的4个新特性:安全...

相关文章

    暂无相关文章

用户评论

大家都在看