ITPub博客

首页 > Linux操作系统 > Linux操作系统 > C# 3.0语言新特性(语言规范): 具有隐式类型的数组

C# 3.0语言新特性(语言规范): 具有隐式类型的数组

原创 Linux操作系统 作者:youli_113 时间:2008-01-15 16:09:36 0 删除 编辑

原文:《C# Version 3.0 Specification》,Microsoft
翻译:lover_P
数组创建表达式的语法被扩展为支持具有隐式类型的数组创建表达式:

array-creation-expression:
...
new  [  ]  array-initializer

在一个具有隐式类型的数组创建表达式中,数组实例的类型通过数组初始化器中指定的元素来推断。特别地,数组初始化器中的表达式类型形成的集合中,必须恰好有一个类型使得其他类型都可以隐式地转换为该类型,并且该类型不是空类型,则创建一个具有该类型的数组。如果无法推断出恰好一个这样的类型,或者推断出来的类型是空类型,会发生一个编译期错误。

下面是具有隐式类型的数组创建表达式的一些例子:

var a = new[] { 1, 10, 100, 1000 };          // int[]

var b = new[] { 1, 1.5, 2, 2.5 };            // double[]

var c = new[] { "hello", null, "world" };  // string[]

var d = new[] { 1, "one", 2, "two" };       // Error

最后一个表达式会产生一个编译期错误,因为int和string都不能隐式地转换为另一个。这时就必须使用一个具有显式类型的数组创建表达式,例如指定其类型为object[]。另一种可选方法是,某个元素可以被转换为一个通用基本类型,这个类型就将成为推导出的类型。

具有隐式类型的数组创建表达式可以与匿名对象初始化器合并,来创建匿名类型数据结构。例如:

var contacts = new[] {

    new {

        Name = "Chris Smith",

        PhoneNumbers = new[] { "206-555-0101", "425-882-8080" }

    },

    new {

        Name = "Bob Harris",

        PhoneNumbers = new[] { "650-555-0199" }

    }

};


该文章转载自网络大本营:http://www.xrss.cn/Dev/DotNet/2006512707.Html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12641349/viewspace-145411/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    153
  • 访问量
    169134