当前位置: 首页 > news >正文

个人网站备案名称大全成都疫情最新情况

个人网站备案名称大全,成都疫情最新情况,长春网站建设 找源晟,网站建设企业邮箱VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性以前自动属性必须同时提供setter和getter方法,因而只读属性只能通过先声明field,然后property只提供gett…

VS2015预览版中的C#6.0 新功能(一)

VS2015预览版中的C#6.0 新功能(三)

自动属性的增强

  • 只读自动属性

以前自动属性必须同时提供setter和getter方法,因而只读属性只能通过先声明field,然后property只提供getter方法来实现,无法通过自动属性来实现。在c#6.0中,可以通过如下的形式声明只读的自动属性:

public string FirstName { get; }

对于只读的自动属性,其backing field是readonly的,其值可以在属性初始化器(下面会详细讲解属性初始化器)或者类的构造函数中给予。在下面的例子中FirstName和LastName属性是通过自动属性初始化器赋值的,而TimeOfStartingWrite是通过构造函数赋值的。

public class Author
{public DateTime TimeOfStartingWrite { get; }public string FirstName { get; } = "Dery";public string LastName { get; } = "Xu";public Author(DateTime timeOfStartingWrite){TimeOfStartingWrite = timeOfStartingWrite;}
}

        由于只读属性没有setter方法,它的值是通过直接赋给其backing field的。

  • 自动属性初始化器

        在上面的例子中可以看到对于自动属性,我们可以使用属性初始化器来为其赋值。例子如下:      

 public class Book{public int Number { get;}=100;public string Abstract { get; set; }="this is abstract";public string Name { get; set; }public float Price { get; set; }public Author PrimaryAuthor { get; set; }public List<Author> Authors { get; set; }}

      其中Number是一个只读自动属性,我们通过属性初始化器为其赋值100,而Abstract是一个可读写的自动属性,我们通过属性初始化器为其赋值为字符串"this is abstract"。自动属性初始化器直接赋值给后台生成的field,不会走自动属性的setter方法。它和field初始化器一样具有如下的一些特点:

  1. 按照书写顺序执行,所以在上例中,先执行Number属性的初始化,再执行Abstract属性的初始化
  2. 不能使用this,因为它是在对象完全初始化之前运行的

     自动属性初始化器中可用来赋给属性的值似乎很有限,而下面的主构造函数可以帮助它获得跟多可能的值。

主构造函数

     主构造函数功能把构造函数的声明合并到了类的声明中。让我们可以编写如下所示的代码:

[Serializable]
public class Patent(string title, string yearOfPublication)
{public Patent(string title, string yearOfPublication,IEnumerable<string> inventors):this(title, yearOfPublication){Inventors.AddRange(inventors);}private string _Title = title;public string Title{get{return _Title;}set{if (value == null){throw new ArgumentNullException("Title");}_Title = value;}}
}

然而,这次的release中还不支持该功能,会在以后的更新中进一步说明。

表达式体函数和属性

对于Lambda表达式,我们知道可以通过表达式体或者在语句块中的普通函数来声明,现在这个功能也可以应用到类的函数成员上。

  • 函数成员
 public int Add(int op1, int op2) => op1 + op2;public void Print(string message) => Console.WriteLine("Hello " + message);

    使用表达式体函数的效果和只有单一return语句的函数体一样,所以上面的例子和下面的code是一样的

public int Add(int op1, int op2)
{return op1 + op2;
}public void Print(string message)
{Console.WriteLine("Hello " + message);
}

    请注意Add方法是有返回值的,而Print是没有返回值的,对于没有返回值的函数,Lambda表达式体必须是语句Lambda即new, call, decrement,increment,赋值等表达完整语句的操作而非表达式,这个要求和lambda是一样的。

  • 属性和索引器

    属性和索引器有getter和setter方法,表达式体可以用来写只读的属性和索引器,表达式体就是对应getter方法的方法体,例子如下:

public Author this[int id] => store[id];
public string FullName => firstName + lastName;

    注意这里不需要给出get关键字,编译器会做隐式推断。

    完整例子如下

    internal class ExpressionBody{private string firstName = "first name";private string lastName = "lastName";private List<Author> store = new List<Author> { new Author(DateTime.Now), new Author(DateTime.Now) };public int Add(int op1, int op2) => op1 + op2;public void Print(string message) => Console.WriteLine("Hello " + message);public Author this[int id] => store[id];public string FullName => firstName + lastName;//public int Add(int op1, int op2)//{//    return op1 + op2;//}//public void Print(string message)//{//    Console.WriteLine("Hello " + message);//}}

转载于:https://www.cnblogs.com/dereklovecc/p/4127454.html

http://www.lbrq.cn/news/2582605.html

相关文章:

  • 山东网站建设推广关联词有哪些关系
  • 漯河网站建设 千弘网络信息流优化师是什么
  • 网站制作上海市关键词搜索趋势
  • 网站技术有哪些搜索热门关键词
  • 最好的网页设计网站宁波seo在线优化
  • 莱芜有需要制作网站的公司吗免费b站推广网站2022
  • 新加坡的网站域名上海关键词自动排名
  • 河南春辉建设集团官方网站手机百度seo怎么优化
  • 网站设计O2O平台佛山总代理东莞网络推广策略
  • 淮安做网站找哪家公司关键词快速上首页排名
  • 太原网站建设谁家好网络销售怎么样
  • 直播网站开发核心技术seo网络优化专员
  • 玩具网站建设策划书神马推广
  • 山东网站建设好不好友情链接的形式
  • 江西个人网站备案做论坛沈阳cms模板建站
  • 事业单位网站开发工作规程高级seo培训
  • 网站建设需要些什么软件seo推广排名平台有哪些
  • wordpress分页404seo免费优化公司推荐
  • 浦东新区做网站公司关键词规划师
  • 驻马店做网站网页设计图片
  • 网络专业的网站建设武汉seo推广
  • 做网站的语言叫什么厦门百度代理
  • 创建网站的三种方法海外网络专线
  • wordpress多个网站博客seo怎么做
  • 黑苹果做网站开发网络营销师证书查询
  • 网站建设工资待遇贵港seo
  • 网站建设 邦如何进行seo搜索引擎优化
  • 什么叫企业网站近期热点新闻事件
  • 网站建设中的服务器搭建方式杭州数据推广
  • wordpress 批量发布微博关键词排名优化
  • 深入解析 Apache Tomcat 配置文件
  • Python实现Word转PDF全攻略:从入门到实战
  • 最小半径覆盖问题【C++解法+二分+扫描线】
  • 【1】WPF界面开发入门—— 图书馆程序:登录界面设计
  • 【领域热点】【Vue】Vue 与 WebAssembly:前端性能优化的黄金搭档
  • python匿名函数lambda