第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

對(duì)象初始化器和構(gòu)造函數(shù)之間有什么區(qū)別?

對(duì)象初始化器和構(gòu)造函數(shù)之間有什么區(qū)別?

C#
九州編程 2019-08-03 03:03:22
對(duì)象初始化器和構(gòu)造函數(shù)之間有什么區(qū)別??jī)烧咧g有什么區(qū)別,什么時(shí)候在“構(gòu)造函數(shù)”上使用“對(duì)象初始化器”,反之亦然?我和C一起工作,如果這重要的話。另外,對(duì)象初始化器方法是否特定于C#或.NET?
查看完整描述

3 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊


對(duì)象初始化器是在C#3中添加的,目的是在使用對(duì)象時(shí)簡(jiǎn)化對(duì)象的構(gòu)造。

構(gòu)造函數(shù)運(yùn)行,給定0或多個(gè)參數(shù),用于創(chuàng)建和初始化對(duì)象。以前調(diào)用方法獲取創(chuàng)建對(duì)象的句柄。例如:

MyObject myObjectInstance = new MyObject(param1, param2);

在本例中,MyObject將使用以下值運(yùn)行param1param2..它們都用于創(chuàng)建新的MyObject在記憶中。返回已創(chuàng)建的對(duì)象(使用這些參數(shù)進(jìn)行設(shè)置),并將其設(shè)置為myObjectInstance.

通常,構(gòu)造函數(shù)需要所需的參數(shù)才能完全設(shè)置對(duì)象,這樣就不可能在無(wú)效的狀態(tài)下創(chuàng)建對(duì)象。

然而,通常有“額外”屬性可以設(shè)置,但不是必需的。這可以通過(guò)重載的構(gòu)造函數(shù)來(lái)處理,但是會(huì)導(dǎo)致有許多在大多數(shù)情況下不一定有用的構(gòu)造函數(shù)。

這將導(dǎo)致對(duì)象初始化器-對(duì)象初始化程序允許您在對(duì)象上設(shè)置屬性或字段。已經(jīng)建好了,但是以前你可以用它做任何事。例如:

MyObject myObjectInstance = new MyObject(param1, param2){
    MyProperty = someUsefulValue};

如果您這樣做,它的行為將與您的行為大致相同:

MyObject myObjectInstance = new MyObject(param1, param2);myObjectInstance.MyProperty = someUsefulValue;

然而,在多線程環(huán)境對(duì)象初始化器的原子性可能是有益的,因?yàn)樗乐箤?duì)象處于未完全初始化的狀態(tài)(請(qǐng)參閱這個(gè)答案(更多細(xì)節(jié))-它要么是空的,要么是初始化的,就像你想要的。

此外,對(duì)象初始化器更易于讀取(特別是在設(shè)置多個(gè)值時(shí)),因此它們給您帶來(lái)了與構(gòu)造函數(shù)上的許多重載相同的好處,而無(wú)需使該類的API復(fù)雜化。




查看完整回答
反對(duì) 回復(fù) 2019-08-05
  • 3 回答
  • 0 關(guān)注
  • 298 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)