zoukankan      html  css  js  c++  java
  • [转]Anonymous type and implicit type

    • 来自:http://social.msdn.microsoft.com/Forums/de-DE/visualcshartzhchs/thread/4b55fc5b-fa87-4861-b1e3-3be397612872

      隐式类型
      从Visual C# 3.0开始,在方法体内可以声明隐式的变量类型VAR。我们可以按照以下显示的方法使用修饰符VAR 告诉编译器推断和声明类型:
      var i = 23;      // int i = 23;
      var s = "Hello"; // string s = "Hello";
      数组也可以被声明为隐式类型:
      var a = new[] { 1, 2, 3, 4 }; // int[]
      var b = new[] { "hello", null, "world" }; // string[]
      var c = new[] { a, new[] { 5, 6, 7, 8 } }; // 长度不确定的数组

      注意:
      声明隐式类型的变量有以下限制:
      • VAR只能被用于局部变量声明时,且需要即时初始化;此变量不能被初始化为null,因为null就像lambda表达式或者方法一样没有类型。但是,可以被初始化为一个得到null值的表达式,只要这个表达式有类型。
      • var不能用作类的字段
      • var类型声明的变量不能用作自己初始化的表达式中
      换言之,var v=v++;将会在编译时报错
      • 复合的隐式类型不能被同时初始化
      • 如果在作用域中,我们定义了一个var类型的变量,尝试用var关键字初始化一个局部变量,编译时会报错。
      其他的相关信息可以参考Implicitly Typed Local Variables (C# Programming Guide)和Type Relationship in LINQ Query Operations (C#)。

      匿名类型
      匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。 这些属性的类型由编译器推断。 下面的示例演示一个用两个分别名为 Amount 和 Message 的属性初始化的匿名类型。
       var v = new { Amount = 123, Message = "Hello" };
      匿名类型是由一个或多个公共只读属性组成的类类型。 不允许包含其他种类的类成员(如方法或事件)。
      注意:
      匿名类型的一些规则:
      • 除了第二点的情况下,必须为使用表达式初始化的属性提供名称
      • 如果没有在匿名类型中指定成员名称,编译器会为匿名类型成员指定与用于初始化这些成员的属性相同的名称
      • 匿名类型具有方法范围
      其他细节信息,请参考Anonymous Types (C# Programming Guide)

  • 相关阅读:
    窗体设计器出不来
    maven ...../.m2/settings.xml
    myeclipse.ini
    人民币大小写
    驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接。错误:
    写了一个浏览器插件
    用Excel计算加权平均分和GPA
    cfree使用cygwin编译程序出现计算机丢失cygwin1.dll解决办法
    apt-cyg update --2017-02-17 07:57:24-- http://mirrors.163.com/cygwin//x86_64/setup.bz2 正在解析主机 mirrors.163.com... 123.58.173.185, 123.58.173.186 正在连接 mirrors.163.com|123.58.173.185|:80... 已连接。 已发出 HTT
    生产者消费者问题
  • 原文地址:https://www.cnblogs.com/2008freestyle/p/2459501.html
Copyright © 2011-2022 走看看