zoukankan      html  css  js  c++  java
  • C#的隐式类型、匿名类型、自动属性、初始化器

    1.隐式类型

    1)源起
    在隐式类型出现之前,我们声明一个变量时,需要为它指定相应的类型,甚至在foreach一个集合的时候,也要为遍历的集合元素,指定变量的类型,隐式类型出现后,程序员就不用再做这个工作了。
    2)使用方法
    来看看下面的代码:

    1. var a=1;//int a=1;
    2. var b="123";//string b="123";
    3. var myObj=new MyObj();//MyObj myObj=new MyObj();

    上面的每行代码,与后面的注释起到的作用完全一样。也就是说,在声明一个变量(并且同时给它赋值)的时候,完全不用指定变量的类型,只要一个var就可以解决问题。
    3)这样做会降低性能吗?
    不会!上面的代码和注释里的代码,编译后产生的IL代码(中间语言代码)是完全一样的(编译器会根据变量的值,推导出变量的类型,才产生IL代码)
    4)这个关键字的好处:
    在foreach一个集合时,可以使用var关键字代替书写循环变量的类型;(其它待发现。。)
    5)注意事项
    你不能用var关键字声明变量时不给它赋值,因为编译器无法推导出变量的类型。

    2.匿名类型

    1)源起
    创建一个对象,一定要先定义这个对象的类型吗?不一定,看看下面的代码
    2)使用

    1. var oddsAndEnds = new[]{
    2. new {Name="MVC" , Category="Pattern"},
    3. new {Name="Hat" , Category="Clothing"},
    4. new {Name="Apple" , Category="Fruit"}
    5. };
    6. StringBuilder result = new StringBuilder();
    7. foreach (var item in oddsAndEnds) {
    8. result.Append(item.Name).Append(" ");
    9. }

    new关键字之后就直接为对象定义属性,并为这些属性赋值。而且,对象创建出来之后,在创建对象的方法中,还可以畅通无阻的访问对象的属性。
    通过结合对象初始化器和类型推断,可以创建简答的数据存储对象,而不需要定义相应的类或结构。

    3.自动属性

    1)源起
    为一个类定义属性,我们一般会写如下的代码

    1. public class product
    2. {
    3. private string name;
    4. private int price;
    5. public string Name
    6. {
    7. get { return name; }
    8. set { name = value; }
    9. }
    10. public int Price
    11. {
    12. get { return price; }
    13. set { price = value; }
    14. }
    15. }

    但很多时候,这些私有变量对我们一点用处都没有,比如对象关系映射中的实体类。自C#3.0引入了自动实现的属性,以上代码可以写成如下形式:

    1. public class product
    2. {
    3. public string name { get; set; }
    4. public int price { get; set; }
    5. }

    4.对象初始化器和集合初始化器

    1)源起
    我们创建一个对象并给它的属性赋值,代码一般写成这样子:

    1. var product=new Product();
    2. product.name="小米";
    3. product.price=3;

    自C#3.0引入对象初始化器,代码可以写成如下形式:

    1. var product=new Product(){name="小米",price=3};

    集合初始化器如下定义:

    1. var arr=new List<int>(){1,2,3,4,5,6};

    参考资料:

    30分钟LINQ教程
    精通ASP.NET MVC 4

  • 相关阅读:
    前端学习之JavaScript
    前端学习之CSS
    前端学习之HTML
    MySQL多表查询(重要)
    C# 基本语法
    第 9 章 —— 原型模式
    第 7 章 —— 代理模式
    第 6 章 —— 装饰模式
    将搜索关键词加红
    SQL Server 创建触发器(trigger)
  • 原文地址:https://www.cnblogs.com/iwsx/p/7009078.html
Copyright © 2011-2022 走看看