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

//作者:杨卫国
//时间: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 getset; }
            
public Int64 ID getprivate 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[] 1243 };//当然也可以写成: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>() 1354678 };
            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 = 5413986720 };
            
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;
        }

       
    }

   
}

原文地址:https://www.cnblogs.com/craig/p/1455651.html