[C#.NET] C# 3.0 (VS 2008) 語言新特性

  • 10540
  • 0
  • C#
  • 2009-07-02

[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擴充的類別

1-1

 

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

Image result for microsoft+mvp+logo