zoukankan      html  css  js  c++  java
  • 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只是语言层面的东西,编译器会在编译的时候通过类型推断把它换成真正的类型

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

     

  • 相关阅读:
    176. Second Highest Salary
    175. Combine Two Tables
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
    169. Majority Element
    168. Excel Sheet Column Title
    167. Two Sum II
    160. Intersection of Two Linked Lists
    个人博客记录
    <meta>标签
  • 原文地址:https://www.cnblogs.com/shelley/p/1491018.html
Copyright © 2011-2022 走看看