c#3.0锐利体验(1)概述

  • 隐含类型局部变量
  • 扩展方法
  • 对象与集合初始化器
  • 匿名类型

 一、隐含类型局部变量:

View Code
            var i = 5;
            var h = 23.56;
            var s = "C Sharp";
            var intArr = new[] { 1, 2, 3, 4 }; 

  a)var为关键字,可以根据后面的初始化语句自动推断类型。

  b)初始化语句必须为表达式,并且编译时可以推断类型。

  c)var声明的仅限于局部变量,亦可用于foreach,using等语句中。

  d)数组也可以作为隐含类型

二、扩展方法

View Code
public static class Extensions {
        public static void Foo(this string s) {
            ...
        }
         string s = "";
         s.Foo();       
}    

  a)扩展方法允许我们在不改变源代码的情况下扩展现有类型中的实例方法。

  b)扩展方法的本质为将实例方法调用在编译期改编为静态类中的静态方法调用。

  c)现有的实例方法优先级最高,其次为最近的namespace下的静态类的静态方法,最后为较远的namespace下的静态类的静态方法。

  d)扩展方法是一种编译时技术,注意与反射等运行时技术进行区别,并慎重使用。

三、对象与集合初始化器

View Code
public class Point {
        int x, y;
        public int X { get; set; }
        public int Y { get; set; }
}
var a = new Point { X = 0, Y = 1 };
相当于:
var b = new Point();
b.X = 0;
b.Y = 1;

集合初始化器:
List<int> num = new List<int> { 1, 2, 3 };

四、匿名类型

View Code
var p1 = new { Name = "Lawnmower", Price = 495.00 };
var p2 = new { Name = "Shovel", Price = 100 };

  a)可以使用new关键字调用匿名初始化器创建一个匿名类型的对象。

  b)匿名类型直接继承自System.Object。

  c)匿名类型的成员是编译器根据初始化器推断而来的一些读写属性。
over,本文内容来自http://msdnwebcast.net/

posted @ 2012-12-26 14:07  Faceless Void  Views(156)  Comments(0)    收藏  举报