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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

飲歌長嘯 2019-07-13 09:25:12
對象初始化器和構(gòu)造函數(shù)之間有什么區(qū)別?兩者之間有什么區(qū)別,什么時候在“構(gòu)造函數(shù)”上使用“對象初始化器”,反之亦然?我和C一起工作,如果這重要的話。另外,對象初始化器方法是否特定于C#或.NET?
查看完整描述

3 回答

?
繁華開滿天機(jī)

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

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

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

MyObject myObjectInstance = new MyObject(param1, param2);

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

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

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

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

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

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

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

然而,在多線程環(huán)境對象初始化器的原子性可能是有益的,因?yàn)樗乐箤ο筇幱谖赐耆跏蓟臓顟B(tài)(請參閱這個答案(更多細(xì)節(jié))-它要么是空的,要么是初始化的,就像你想要的。

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


查看完整回答
反對 回復(fù) 2019-07-13
  • 3 回答
  • 0 關(guān)注
  • 797 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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