• C#3.0新体验(一) 隐含类型局部变量


    [转] http://blog.csdn.net/maotin/archive/2008/09/23/2968141.aspx

    C#3.0新体验(一)

    maotin

    20080923

    前言概述:
          
    微软的脚步一直都很快,经常发现很多技术还没学就已经过时了(可能是本人学习能力低下);作为研发个人认为应该站在技术的前沿,一定要跟上新技术的脚步(没办法,不学这些东西,过一段时间饭碗要保不住的);
           从2002开始做开发,一直以来都在用vs.net(c#),可以算的上使用.net的一个老程序员了,可是回头看看,居然对.net很多都不了解,或者是一知半解;(汗如泉涌)作为一个用了5,6年.net开发的程序员,居然只知道页面放控件要整齐好看,UI数据传递给业务层处理,然后调用数据层访问(工作主要处理内容),很长一段时间不知道asp.net为何物(以前一直做winform),开发使用的最原始的.net自带IDE工具,没有开发任何辅助工具,对架构设计没什么概念,项目管理不知如何下手,测试全靠手工点界面,性能优化没有效果,数据事务没有保障,安装部署从来不知道怎么弄,代码重构没有干过,设计模式只知道工厂... ...
           实在有太多东西不懂,(省略号包含的内容太多)这两年刚开始接触asp.net开发,一个人摸着石头过河,走了不少弯路,到现在还在摸索,感觉好多基础的东西都是新的;对自己能力极度怀疑的情况下,同时对微软(当然包括其他WEB技术供应商)这些牛人们产生极度的愤慨,没事搞出那么多技术,让我还怎么活(能力较差,性格懒散类型),学好一个技术(点)还有N+1个在后面排着;
           这两年忙着装修,娶媳妇(全是偷懒的借口),原来的一点技术上积累的老底已经过时,很多都用不上了,直接导致一个严重的后果:近两年没涨过工资,还要当心失业的问题(一家老小啊,还有万恶的银行贷款压迫),在诸多压力下,决定彻底改造,重新做人,争取早日刑满释放,TNND,应该说金盆洗手(攒个百八十万的,当然要算美金才行,这社会RMB不经花),于是乎,决定从基础学起,开始这个C#3.0历程,希望整理的这些资料能给各位有一点点帮助!

     一.C# 3.0语言主要增强点

    • 隐含类型局部变量

    • 扩展方法

    • 对象与集合初始化器

    • 匿名类型

    • Lambda表达式

    • 查询表达式( LINQ )

    • 表达式树


     二.隐含类型局部变量

    先来看看例句:

    var i = 5;

    var h=23.56;

    var s = “C Sharp";

    var intArr = new[] {1,2,3,4} ;

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

    "var"这个关键字是不是很眼熟,javascript中经常用到(互相学习现在比较常见了),当然C#中var和javascript的var差别还是比较大。

    1.var只能作为局部变量使用;

    就是说var只能定义在一个方法里面,或者foreach,for,using等语句里面:

    public class VarTest
    {
         private void test()
         {
             var i = 0;
         }
     } 

    2.var可以申明任何类型变量,可以根据后面的初始化语句自动推断类型;

    这个和object有点像,但var是强类型,根据初始化表达式来定义变量的类型;

    var i=0; i 是int类型

    var str = "test"; str是string类型

    3.var定义时,必须使用表达式初始化;

    也就是必须定义成 var i=0; 没有初始化编译会报错,而且初始化值不能为null,编译器无法根据null来推断出局部变量的类型;初始值除了int,string等数据类型外,还可以使用new 一个对象作为初始值(从网上大家发表的看法,var使用最多的就是配合一个匿名类型的对象来使用,以及在Linq中使用)


    //下面是网上某个网友写得博客,拷贝修改了一下!

    配合匿名类型使用:

     

                 var a = new{ Name = "maotin" ,Age = 99};
                Console.WriteLine(a.Name);
                Console.WriteLine(a.Age);

     

                    在linq中应用:

     

      int[] numbers = 5413986720 };
    var queryLowNums =
        from num in numbers
        where num < 5
        select num;
    foreach (var s in queryLowNums)
      {
         Console.Write(s.ToString() + " ");
      }

     

    4.var使用建议

    一般var不要像“var i=9;”这样使用,程序可读性不高;

    在匿名类型中使用比较方便;foreach中使用也不错;

    var只是语言层面的东西,编译器会在编译的时候通过类型推断把它换成真正的类型

    (转帖请注明出处!谢谢)

     

  • 相关阅读:
    GO语言(golang)官方网站!
    Android官方网站!
    如何使用Gmail的别名功能?
    函数指针
    单例 ------ JAVA实现
    网络通信方案 ------ 以太网通信软硬件实现方案
    nginx的启动和关闭
    FineReport软件
    nginx的MainLine version、Stable version、Legacy versions
    linux常用命令
  • 原文地址:https://www.cnblogs.com/shelley/p/1491018.html
Copyright © 2020-2023  润新知