C#中私有構(gòu)造函數(shù)的特點(diǎn)和用途實(shí)例解析
本文以實(shí)例形式分析私有構(gòu)造函數(shù)的特點(diǎn),以及在何種情況下使用私有構(gòu)造函數(shù)。相信對(duì)于大家更好的理解C#中的私有構(gòu)造函數(shù)有一定的促進(jìn)作用。具體如下:
一、帶私有構(gòu)造函數(shù)的類不能被繼承
在Animal類中聲明一個(gè)私有構(gòu)造函數(shù),讓Dog類來(lái)繼承Animal類。
public class Animal
{
private Animal()
{
Console.WriteLine("i am animal");
}
}
public class Dog : Animal
{
}
運(yùn)行程序,生成解決方案,報(bào)錯(cuò)如下圖所示:

二、帶私有構(gòu)造函數(shù)的類不能被實(shí)例化
運(yùn)行如下測(cè)試代碼:
class Program
{
static void Main(string[] args)
{
Animal animal = new Animal();
}
}
public class Animal
{
private Animal()
{
Console.WriteLine("i am animal");
}
}
程序運(yùn)行后生成解決方案,報(bào)錯(cuò)如下圖所示:

三、私有構(gòu)造函數(shù)的應(yīng)用
有些時(shí)候,我們不希望一個(gè)類被過(guò)多地被實(shí)例化,比如有關(guān)全局的類、路由類等。這時(shí)候,我們可以為類設(shè)置構(gòu)造函數(shù)并提供靜態(tài)方法。
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";
}
}
總結(jié):一旦一個(gè)類被設(shè)置成私有構(gòu)造函數(shù),就不能被繼承,不能被實(shí)例化,這種情況下,通常為類提供靜態(tài)方法以供調(diào)用。
相關(guān)文章
C#實(shí)現(xiàn)JSON和對(duì)象之間互相轉(zhuǎn)換功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)JSON和對(duì)象之間互相轉(zhuǎn)換功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#實(shí)現(xiàn)對(duì)象與json之間相互轉(zhuǎn)換的操作技巧,需要的朋友可以參考下2017-09-09
NumberToUpper數(shù)字轉(zhuǎn)中文詳解
本文介紹NumberToUpper數(shù)字轉(zhuǎn)中文的方法,大家參考使用吧2013-12-12
解析美國(guó)東部時(shí)間與北京時(shí)間相互轉(zhuǎn)換的實(shí)現(xiàn)代碼
本篇文章是對(duì)美國(guó)東部時(shí)間與北京時(shí)間相互轉(zhuǎn)換的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
用?FieldMask?提高?C#?gRpc?的服務(wù)性能
這篇文章主要介紹了用?FieldMask?提高?C#?gRpc?的服務(wù)性能,FieldMask?是一個(gè)?protobuf?消息,包含一個(gè)名為?paths?的字段,用于指定用于指定讀取操作返回或更新操作修改的字,下文詳細(xì)內(nèi)容,需要的朋友可以參考一下2022-03-03
c#調(diào)整圖片分辨率的實(shí)現(xiàn)示例
本文主要介紹了c#調(diào)整圖片分辨率的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
C#判斷語(yǔ)句的表達(dá)式樹(shù)實(shí)現(xiàn)
這篇文章介紹了C#判斷語(yǔ)句的表達(dá)式樹(shù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
C#使用NPOI實(shí)現(xiàn)Excel讀取數(shù)據(jù)以及保存數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了C#如何使用core版本的NPOI實(shí)現(xiàn)Excel讀取數(shù)據(jù)以及保存數(shù)據(jù)功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2025-03-03

