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)

  • 相关阅读:
    C#产生不重复随机数
    NT6 HDD Installer(硬盘装系统工具)装系统
    R语言实现 广义加性模型 Generalized Additive Models(GAM) 入门
    matlab小段代码学习
    java连接sql server2005
    python正则表达式
    Ubuntu下安装配置JDK 7
    mysql取代rand()的高效率随机读取方法
    UVA 1335 Beijing Guards
    杂思
  • 原文地址:https://www.cnblogs.com/2008freestyle/p/2459501.html
Copyright © 2011-2022 走看看