using System;
using System.Collections.Generic;
using System.Windows.Forms;
static class Program
{
[STAThread]
static void Main()
{
TestCSharp3 testCSharp = new TestCSharp3();
testCSharp.Do();
}
}
public class TestCSharp3
{
public TestCSharp3()
{
}
// 新特性1:prop直接出来的是简单属性,无需另外多写一个私有字段
// 关键代码:{ get; set; }
public int Count { get; set; }
// 同上,propg,利用private修饰set,仍然可以创建外部只读的属性
public int LastNumber { get; private set; }
public void Do()
{
MessageBox.Show(LastNumber.ToString());
// 新特性2:var隐式类型化本地变量,但必须赋初值,编译器通过初值推导出变量类型
var num = 10; //var 相当与 int
var strFirstBookName = "《当》"; //var 相当与 string
var arrNums = new int[] { 1, 3, 4, 7 };
foreach (var item in arrNums)
{
//item的类型为int
}
MessageBox.Show(strFirstBookName);
///新特性3:初始化数组的简写方式:new[]
int[] arrNums2 = new[] { 1, 2, 43 };//当然也可以写成:var arrNums2 = new[] { 1, 2, 43 };
///新特性4:匿名类型
var book1 = new { BookName = "《当》", BookNumber = 1, BookAuthor = "佚名" };
MessageBox.Show(book1.BookName + book1.BookName + book1.BookNumber);
///新特性5:对象构造者(实例化时,构造函数后面跟大括号,可直接初始化对象属性)
TestCSharp3 testCsharp3 = new TestCSharp3() { Count = 10, LastNumber = 9 };
///新特性6:集合构造者特性。允许List<>等自定义集合像数组一样用大括号赋初值
List<int> listNums = new List<int>() { 1, 3, 54, 6, 78 };
MessageBox.Show(listNums.Count.ToString());
}
}
static public class ExpandClass
{
// 新特性7:扩展方法。可在类的外部扩展已有的类,如下是扩展string类
// !!!此特性在.NET 2.0下不可用!!!
//public static bool IsAllNumber(this string str)
//{
// foreach (var ch in str)
// {
// if (!char.IsNumber(ch))
// {
// return false;
// }
// }
// return true;
//}
//public void Do2()
//{
// string str = "ABC";
// bool isNum = str.IsAllNumber();
// MessageBox.Show(isNum.ToString());
//}
//其他新特性如:Lambda表达式、LINQ查询等,请自行查找资料学习,这里就不讲了
//相关链接:http://baike.baidu.com/view/1406676.htm
}