您的位置:首页 > 编程语言 > C#

C# 3.0/3.5语法新特性示例汇总

2008-02-21 11:54 711 查看
工作需要,研究了一下Vs2008,总结了一些语法特性,都汇总到一个示例中了。


//作者:杨卫国


//时间:2008年2月21日


//说明:C#语法新特型示例


using System;


using System.Collections.Generic;


using System.Linq;


using System.Text;


using System.Windows.Forms;




namespace C3




...{


class Program




...{


//新特性1:简单属性,无需另外多写一个私有字段,比较适合于定义实体类


public class GsunisMan




...{


//传统写法,属性必须有一个私有字段


private int age;


public int Age




...{


get




...{


return age;


}


set




...{


age = value;


}


}




//3.5写法,直接定义即可;




public string Name ...{ get; set; }




public Int64 ID ...{ get; private set; }


}




static void Main(string[] args)




...{


//新特性2:隐式类型,隐式类型化本地变量,但必须赋初值,编译器通过初值推导出变量类型


var i = 10; //相当于 int i=10;


var s = "甘肃紫光软件研发部"; //s为String类型;




var arrNums = new int[] ...{ 3,6,9 };






//新特性3:初始化数组的简写方式:new[],可以回忆一下1.1、2.0怎么定义?




int[] arrNums2 = new[] ...{ 1, 2, 43 };//当然也可以写成:var arrNums2 = new[] { 1, 2, 43 };








/**////新特性4:匿名类型,在2.0中有个匿名方法,很容易混淆




var book1 = new ...{ BookName = "《紫光人2007纪念版》", BookNumber = 150,BookPublisher = "甘肃紫光企划部" };


MessageBox.Show(string.Format("书名:{0},数量:{1},出版:{2}" ,book1.BookName , book1.BookNumber , book1.BookPublisher));






/**////新特性5:对象构造者(实例化时,构造函数后面跟大括号,可直接初始化对象属性),在1.1、2.0中必须先定义,然后初始化




GsunisMan aMan = new GsunisMan() ...{Name = "杨卫国", Age = 100 };


MessageBox.Show(string.Format("编号:{0},姓名:{1},年龄:{2}", aMan.ID,aMan.Name,aMan.Age));






/**////新特性6:集合构造者特性。允许List<>等自定义集合像数组一样用大括号赋初值,在以前只有数组才可以的




List<int> listNums = new List<int>() ...{ 1, 3, 54, 6, 78 };


MessageBox.Show(listNums.Count.ToString());




//新特性7.2,请首先看看下面的新特性7.1;


string str = "123";


bool isNum = str.IsAllNumber();


MessageBox.Show(isNum.ToString());




//新特性8:Linq,作用就不多说了,用法太多,自己找资料看;


//从一个集合中找出所有年龄大于55岁的人;


List<GsunisMan> men=new List<GsunisMan>();




men.Add(new GsunisMan...{Name="刘备",Age=65});




men.Add(new GsunisMan ...{ Name = "关羽", Age =60 });




men.Add(new GsunisMan ...{ Name = "张飞", Age = 50 });


var man= from m in men where m.Age>55 select m; //使用Linq,前面几行在准备数据,感觉有些像Sql语句,呵呵


MessageBox.Show(man.First<GsunisMan>().Name); //在此仅显示第一个人姓名




//新特性9:Lambda表达式"=>",一个简单的例子,用法太多,自己找资料看;




int[] numbers = ...{ 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };


int oddNumbers = numbers.Count(n => n % 2 == 1); //找出奇数的个数


MessageBox.Show(oddNumbers.ToString());




}






}


static public class ExpandClass




...{


//新特性7.1:扩展方法。可在类的外部扩展已有的类,如下是扩展string类,为String类增加一个IsAllNumber方法


//!!!此特性在.NET 2.0下不可用!!!


public static bool IsAllNumber(this string str)




...{


foreach (var ch in str)




...{


if (!char.IsNumber(ch))




...{


return false;


}


}


return true;


}




}




}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐