首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 建構函式限制:私有建構函式單例模式與非預設建構函式效果

     編輯:關於C語言

私有建構函式:阻止實例化

工具類、單例模式常用:


class MyClass
{
    private MyClass() { } // 外部無法 new
    public static void Msg1() => Console.WriteLine("Msg1");
    public static void Msg2() => Console.WriteLine("Msg2");
}

MyClass.Msg1(); // 正常
// new MyClass(); // 編譯錯誤

定義非預設建構函式後,預設建構函式消失


class MyClass
{
    private int _num;
    public int Num => _num;

    public MyClass(int x, int y) => _num = x + y; // 只有這個
}

// 正常
var obj = new MyClass(1, 2);
Console.WriteLine(obj.Num); // 3

// 錯誤:無預設建構函式
// var obj2 = new MyClass(); // CS1729

解決方案

  • 明確補上無參建構函式:`public MyClass() { }`
  • 或使用選擇性參數:`public MyClass(int x = 0, int y = 0)`
  • C# 9+ `record` 類型自動產生建構函式與 `with` 運算式

結構體特殊規則

  • 結構**永遠有**隱含無參建構函式 (零值初始化),不可自訂
  • 結構可定義帶參建構函式,但**必須初始化所有欄位**
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved