寫法1:
使用private字段,然后給public字段設置set and get,這樣可以直接給私有字段一個默認值(這個賦值操作可以直接給私有字段,也可以在公共字段的get方法中判斷私有字段是否為空,然后給默認值),具體寫法不再贅述,不會的可以問下度娘,或參考我的博問:
缺點:寫法不夠優美,代碼冗余,到處都是set, get之類的
寫法2:
在無參構造函數中給共有字段1個默認值,即賦值操作。由於使用對象初始化器的寫法可以先調用無參構造函數,因此在大括號中的內容被調用時,其實各個屬性均已被賦值.
對象初始化器可以加小括號,也可以不加小括號,直接跟上1個大括號即可。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleApplication15 7 { 8 class Program 9 { 10 public class Cell { 11 private int _id; 12 public int ID { 13 get { 14 return _id; 15 } 16 set { 17 Console.WriteLine("為ID賦值"); 18 _id = value; 19 } 20 } 21 public string Name; 22 23 public Cell() { 24 Console.WriteLine("Cell構造函數"); 25 this.ID = 1; 26 this.Name = "小明"; 27 } 28 } 29 30 static void Main(string[] args) 31 { 32 Print(new Cell{ 33 ID = 3 34 }); 35 } 36 37 static void Print(Cell c) { 38 Console.WriteLine(c.ID); 39 Console.WriteLine(c.Name); 40 } 41 } 42 }
1. 說明先調用無參數構造函數.jpg
也可以使用對象初始化器給對象賦值,再調用大括號內的賦值,只需將以上代碼中Cell添加構造函數:
1 public Cell(int _aid) { 2 Console.WriteLine("Cell 有1個參數的構造函數"); 3 this.ID = _aid; 4 }
在main函數調用處修改為:
1 static void Main(string[] args) 2 { 3 Print(new Cell(1){ 4 ID = 3 5 }); 6 }
結果如圖:
<完>