使用建構函式
透過建構子來設定
1
2
3
4
5
6
7
8
public class Person
{
public Person() //建構子 ctor
{
this.Name = "Initial Name";
}
public string Name { get; set; }
}
在構造函數中。構造函數的目的是初始化它的資料成員。
使用建構函數,因為「當建構函數完成時,構造應該完成」。
屬性就像你的類別所持有的狀態,如果你必須初始化一個預設狀態,你會在你的建構函式中這樣做。
使用普通屬性(帶有初始值)
在 屬性背後的實際欄位(backing field)直接設定。
1
2
3
4
5
6
7
8
9
public class Person
{
private string _name = "Initial Name"; //屬性背後的實際欄位(backing field)直接設定
public string Name
{
get { return _name; }
set { _name = value; }
}
}
使用自動屬性(指定初始值) C# 6
在宣告屬性的時候就設定初始值。
(在定義自動屬性的時候用 = 運算子來加上賦值敘述,以設定該屬性的初始值)
1
2
3
4
public class Person
{
public string Name { get; set; } = "Initial Name"; //直接用=,指定初始值
}
唯讀的自動屬性 C# 6
唯讀的自動屬性可以使用 Lambda 運算子=>設定初始值。
1
2
3
4
public class Person
{
public string Name => "Initial Name";
}
C# (7.0)
Lambda 運算子=> + 屬性背後的實際欄位(backing field)
1
2
3
4
5
6
7
8
9
public class Person
{
private string _name = "Default Value";
public string Name
{
get => _name;
set => _name = value;
}
}
MSDN - 使用屬性 (C# 程式設計手冊)
MSDN - 自動實作的屬性 (C# 程式設計手冊)
C# 的唯讀自動屬性是怎樣煉成的 by huanlintalk
CSDN - 为 C# 自动属性赋予初始值的最佳方法是什么?
HuntsBot - 为 C# 自动属性赋予初始值的最佳方法是什么?
[C# 筆記] get set 自動屬性 & 普通屬性 by R
Book: Visual C# 2005 建構資訊系統實戰經典教本