本文以實例形式分析私有構造函數的特點,以及在何種情況下使用私有構造函數。相信對于大家更好的理解C#中的私有構造函數有一定的促進作用。具體如下:
一、帶私有構造函數的類不能被繼承
在Animal類中聲明一個私有構造函數,讓Dog類來繼承Animal類。
public class Animal { private Animal() { Console.WriteLine("i am animal"); } } public class Dog : Animal { }
運行程序,生成解決方案,報錯如下圖所示:
二、帶私有構造函數的類不能被實例化
運行如下測試代碼:
class Program { static void Main(string[] args) { Animal animal = new Animal(); } } public class Animal { private Animal() { Console.WriteLine("i am animal"); } }
程序運行后生成解決方案,報錯如下圖所示:
三、私有構造函數的應用
有些時候,我們不希望一個類被過多地被實例化,比如有關全局的類、路由類等。這時候,我們可以為類設置構造函數并提供靜態方法。
class Program { static void Main(string[] args) { string str = Animal.GetMsg(); Console.WriteLine(str); Console.ReadKey(); } } public class Animal { private Animal() { Console.WriteLine("i am animal"); } public static string GetMsg() { return "Hello World"; } }
總結:一旦一個類被設置成私有構造函數,就不能被繼承,不能被實例化,這種情況下,通常為類提供靜態方法以供調用。
新聞熱點
疑難解答