1. 程式人生 > >C#基礎—構造函數

C#基礎—構造函數

函數 data- truct 方法簽名 私有構造函數 class gui nal 情況下

轉載自微軟相關官方文檔;

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/using-constructors

每當創建類或結構時,將會調用其構造函數。 類或結構可能具有采用不同參數的多個構造函數。 使用構造函數,程序員能夠設置默認值、限制實例化,並編寫靈活易讀的代碼。

構造函數與該類或結構具有相同名稱,並且通常初始化新對象的數據成員。 其方法簽名僅包含方法名稱和其參數列表;它不包含返回類型。

public class Person
{
   private string last;
   
private string first; public Person(string lastName, string firstName) { last = lastName; first = firstName; } // Remaining implementation of Person class. }

or

public class Location
{
   private string locationName;
   
   public Location(string name) => locationName = name;

   
public string Name { get => locationName; set => locationName = value; } }

使用構造函數

通過使用簡單構造函數定義了一個名為 Taxi 的類。 然後使用 new 運算符對該類進行實例化。 在為新對象分配內存之後,new 運算符立即調用 Taxi 構造函數。

public class Taxi
{
    public bool isInitialized;
    public Taxi()
    {
        isInitialized = true
; } } class TestTaxi { static void Main() { Taxi t = new Taxi(); Console.WriteLine(t.isInitialized); } }

s

1.通過將構造函數設置為私有構造函數,可以阻止類被實例化——class NLog { private NLog() { } }

構造函數可以將標記為公共,私有,保護,內部,受保護內部或私有受保護。 這些訪問修飾符定義類的用戶構造該類的方式。

2.結構類型的構造函數與類的構造函數類似,但是 structs 不能包含顯式默認構造函數,因為編譯器將自動提供一個顯式默認構造函數。

3.類和 structs 都可以定義帶參數的構造函數。 必須通過 new 語句或 base 語句調用帶參數的構造函數。 類和 structs 還可以定義多個構造函數,並且二者均不需要定義默認構造函數。

4.構造函數可以使用 this 關鍵字調用同一對象中的另一構造函數。 base 一樣,this 可帶參數使用也可不帶參數使用,構造函數中的任何參數都可用作 this 的參數,或者用作表達式的一部分。

在執行構造函數塊之前調用基類的構造函數。 base 關鍵字可帶參數使用,也可不帶參數使用。 構造函數的任何參數都可用作 base 的參數,或用作表達式的一部分。

e

默認構造函數

不帶任何參數的構造函數稱為“默認構造函數”。 每當使用 new 運算符實例化對象且不為 new 提供任何參數時,會調用默認構造函數。

如果沒有為類提供構造函數,默認情況下,C# 將創建一個會實例化對象並將成員變量設置為默認值的構造函數。 如果沒有為結構提供構造函數,C# 將依賴於隱式默認構造函數,自動將值類型的每個字段初始化為其默認值。

靜態構造函數

類或結構也可以具有靜態構造函數,該靜態構造函數初始化類型的靜態成員。 靜態構造函數是無參數構造函數。 如果未提供靜態構造函數來初始化靜態字段,C# 編譯器將提供默認靜態構造函數

C#基礎—構造函數