C# 3.0语言新特性(一)

在新版.net3.5中的c#语言包含了下列新的变化:

1)       隐含类型局部变量

2)       扩展方法

3)       对象与集合初始化器

4)       匿名方法

5)        Lambda表达式

6)       查询表达式(LINQ)

7)       表达式树

 

1 隐含类型局部变量

例子:

var n = 5;

 

            var s = "Hello";

 

            var d = 1.0;

 

            var aNumbers = new int[] { 1, 2, 3 };

 

            var orders = new Dictionary<int, string>();

 

            orders.Add(1, "p1");

 

            orders.Add(2, "p2");

 

            System.Console.WriteLine("The first variables is {0}", n);

 System.Console.WriteLine("The second variables is {0}", s);

 

            System.Console.WriteLine("The thrid variables is {0}", d);

 

            int i;

 

            for (i = 0; i < 3; i++)

            {

                System.Console.WriteLine("The" + i + "  variables is {0}", aNumbers[i]);

            }

 

            for (i = 0; i < 2; i++)

            {

                System.Console.WriteLine("The" + i + "  variables is {0}", orders[i + 1]);

            }

 

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

初始化语句必须为表达式

仅限于局部变量,也可以用于foreach,using等语句中。

数组也可以作为隐含类型。

没有初始化的使用将抱错。

 

2 扩展方法

例子:

#region Extension method starts

public static class Extensition

    {

        public static string F(this string s)

        {

            return "Welcome to " + s;

        }

    }

#endregion Extension method ends

 

string s = "you";

            s = s.F();

     Console.WriteLine(s);

 

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

编译器在编译上面语句时,将s.F()方法调用代替为

Extensition.F(s);

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

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

该方法为编译时技术。

                                                                   (待续)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值