zoukankan      html  css  js  c++  java
  • C#3.0之匿名类型

    VS2008 Beta2 终于出来了,迫不及待的想体验一下。这里记述一些我的使用体验和大家分享。
    在这里我首先从C#3.0的语言本身来走马观花来体验语言层面给我带来那些惊喜。
    从语言本身来看C#3.0直接带给我们的新特性主要包括一下几个方面:
    1、隐含类型局部变量
    2、 扩展方法
    3、对象与集合初始化器
    4、匿名类型
    5、查询表达式(Linq)
    这些新的特性都是在原来C#2.0的基础上进一步扩展演变过来的,很多事情通过让编译器去做而简化我们程序员的工作,这样可以减轻程序员的工作量而提高工作效率。
    首先我们来体验一下,隐含类型局部变量这个特性:
                var sStr = "My String";
                var iInt = 100;
                var fFloat = 2.4;
                var arr = new[] { 1,2,3,4,5,6,6,7,8,9,10};
    这里的变量声明都是合法的,前面的var 是C#3.0新增的关键字,有了这个关键字,编译器在编译这段代码时会自动的根据后面初始化的语句来推断出变量的类型。
    var sStr = "My String";这条语句在编译器执行是会推断编译出 string sStr="My String"; 这里会将var 替换成 string 这里的var 不是一个具体的数据类型,它仅仅是个关键字,我们可以理解成占位符。
    同样的道理 var iInt = 100;会编译成 int iInt=100;
                            var fFloat = 2.4;会编译成 float=2.4;
                            var arr = new[] { 1,2,3,4,5,6,6,7,8,9,10};会编译成 int [] arr = new[] { 1,2,3,4,5,6,6,7,8,9,10};
    注意:
    (1)这个var只用于局部变量,可以用于foreach语句,如foreach(var i in arr) 这时我们可以不用关心arr是什么类型;
    (2)初始话语句必须是表达式,必须是编译器可以推断出来的类型,如果这样写是不合法的var a=null; 因为无法推断出null的类型是什么。

    下面作个小小的例子加以验证:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace CApp
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {            
                var i 
    = 30;//隐式类型
                var b = 40;
                var arr 
    = new[] 12344444433438 };
                
    foreach (var j in arr) 
             
    {
                    Console.WriteLine(j);
                }

                Console.WriteLine(i);
                Console.WriteLine(b); 
                                                                 
            }

        }

    }

    输出结果:
    1
    2
    3
    4
    4
    4
    44
    43
    343
    8
    30
    40

                              

  • 相关阅读:
    决策模型(一):不确定型决策法
    Redis系列(二):Redis的数据类型及命令操作
    Redis系列(一):Redis的简介与安装
    java中传值方式的个人理解
    理解主从设备模式(Master-Slave)
    基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)
    基于ubuntu16.04快速构建Hyperledger Fabric网络
    fastjson 的使用总结
    简析淘宝网的六大质量属性
    软件架构师如何工作
  • 原文地址:https://www.cnblogs.com/vaiyanzi/p/894955.html
Copyright © 2011-2022 走看看