知识大全 Mono为C#添加了类型推断支持

Posted 类型

篇首语:忧劳可以兴国,逸豫可以亡身。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Mono为C#添加了类型推断支持相关的知识,希望对你有一定的参考价值。

Mono为C#添加了类型推断支持  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  据Marek Safar称 通过使用一种名为类型推断(type inference)的技术 Mono上的C# 编译器现在已经能够支持隐式类型的局部变量以及隐式类型的数组了

  在 类C 的语言 比如C#中 我们经常使用类似 type variable = new type 这样略显冗余的办法来创建一个对象 若是变量的类型名称较长 或是会经常变化 那么这样的声明方法更是将显得非常乏味

  借助于最新引入的 var 关键字 C# 大大减小了这类冗余 通过这样的声明方式 开发者即可在得到动态创建类型便利的同时 也无须牺牲原有的静态类型支持 编译器将通过等号右面的类型信息来确定变量的实际类型

  需要注意的一点是 C#仍旧是早期绑定和静态类型的 类似Visual Basic这类延迟绑定(late binding)语言中的一些常见问题(比如由拼写错误造成的 missing method exception )并不会在C#中出现

  虽然看上去不错 不过添加类型推断却不只是为了提高开发者的那么一点点输入速度 类型推断是实现匿名类的一个必要的前提条件 而匿名类则在LINQ中被广 泛使用 因为匿名类并没有一个指定的类型名称 所以若是没有了类型推断的支持 我们就无法在C#中创建该类型的实例 (VB则是通过延迟绑定来实现的这个 功能 不过这也带来了 missing method exception 之类的问题 )

  C#中支持两种类型推断 隐式类型变量和隐式类型数组 二者的实现基础完全相同 即在编译时将 var 替换成为分析得到的正确的变量或数组类型表达式

  若是变量的声明和赋值不在同一行书写的话 编译器将不允许我们使用类型推断 虽然从技术角度上考虑 实现这个功能没有什么困难 不过C#编译器的开发团队可能是为了避免其带来的复杂性 所以并没有考虑支持这个功能

  Marek Safar还提到了两个无法应用类型推断的场景

  故名思意 隐式类型局部变量 将无法用于域变量或常量的声明中 否则将导致编译错误

  我无法确定为什么会设置这样的限制 或许我有些地方考虑得也不够全面

cha138/Article/program/net/201311/15215

相关参考

知识大全 c#(或vb.net)程序改进,可以提高性能

  使用值类型的ToString方法  在连接字符串时经常使用+号直接将数字添加到字符串中这种方法虽然简单也可以得到正确结果但是由于涉及到不同的数据类型数字需要通过装箱操作转化为引用类型才可以添加到字

未开展肾活检的单位如何根据狼疮性肾炎的临床表现推断其病理类型

未开展肾活检的单位如何根据狼疮性肾炎的临床表现推断其病理类型?   狼疮性肾炎的临床表现与病理改变之间有一定的联系。一般说来,正常肾小球和系膜性肾小球肾炎型临床表现较轻,可无尿异常,亦可表现为隐匿性肾

未开展肾活检的单位如何根据狼疮性肾炎的临床表现推断其病理类型

未开展肾活检的单位如何根据狼疮性肾炎的临床表现推断其病理类型?   狼疮性肾炎的临床表现与病理改变之间有一定的联系。一般说来,正常肾小球和系膜性肾小球肾炎型临床表现较轻,可无尿异常,亦可表现为隐匿性肾

知识大全 C#给RichTextBox添加查找画面

C#给RichTextBox添加查找画面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /*  

知识大全 eclipse3.2添加C#插件

eclipse3.2添加C#插件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 C#实现IE浏览器添加快捷菜单

C#实现IE浏览器添加快捷菜单  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#实现IE浏览器

知识大全 在Asp.net(C#)中添加程序实现验证码功能

在Asp.net(C#)中添加程序实现验证码功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 RAD Studio 2009通过Mono提供.NET应用跨平台开发

RADStudio2009通过Mono提供.NET应用跨平台开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 C#中的匿名类型与隐式类型变量

C#中的匿名类型与隐式类型变量  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在C#中引入了Li

知识大全 在ASP.NET里 MVC框架添加AJAX支持

在ASP.NET里MVC框架添加AJAX支持  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一引言&