[C#.NET] C# 3.0 (VS 2008) 語言新特性
1.Implicitly Typed Local Variables:隱含變數
還記的變數要怎麼宣告吧,如果忘了那就………。
int[] arrNums = new int[] {3, 6, 9};
int myInt = 0;
bool myBool = true;
string myString = "我是余小章";
double dv = 1.234;
免記資料型態了,丟給var就對了,但必須賦與初值,就好像是VB6的Variant一樣可以塞任何資料型態,不過var跟Variant在使用上不太一樣,別搞混了。
var arrNums = new int[] { 3, 6, 9 };
var myInt = 0;
var myBool = true;
var myString = "我是余小章";
var dv = 1.234;
2.Automatic properties:自動屬性
舊用法:要有一個欄位變數(Field Variable):age ,get還要return,set要收欄位變數的值,
private int age;
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
現在!免!
按下面的語法寫就可以,不過get與set兩者都要存在才行。
public string Age{ get; set; }
若是要設定唯讀
public string Age{ get; private set; }
3.Extension Methods:擴充方法
為是現有的類別擴充啦,免知道那個類別的原碼,直接加新功能給它。
有兩點需要注意:
一是必須為靜態類別,靜態方法
二為需要定義擴充的類別方法,下面的例子表示要擴充string類別的方法
namespace WindowsFormsApplication1
{
static public class NewSyntax
{
public static bool IsAllNumber(this string str)
{
foreach (var ch in str)
{
if (!char.IsNumber(ch))
{
return false;
}
}
return true;
}
}
}
下圖可以看到我們為string擴充的類別
4.對象和集合初始值賦予
4-1.集合初始化舊語法
List<string> list = new List<string>();
list.Add("A");
list.Add("B");
list.Add("12");
4-2.集合新語法:可以直接指定初值
var list = new List<string>() { "A", "B", "12" };
4-3.對象舊語法:必須要先new出一個新的物件,方能指定成員,現有一個Person類別,舊語法的表示方法如下
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public decimal Height { get; set; }
}
Person per = new Person();
per.Name="余小章";
per.Age=20;
per.Height = 172;
4-3.新語法則可以直接賦予初值:
var p = new Person { Name = "余小章", Age = 20, Height = 172 };
var persons = new[]
{
new Person { Name = "Orochi", Age = 24, Height = 175 },
new Person { Name = "Blinda", Age = 23, Height = 165 },
new Person { Name = "Ninicat", Age = 22, Height = 170 }
};
還有哪些語言新特性呢…大家一起來匯整吧
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET