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

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

隱式打字;為什么只是局部變量?

隱式打字;為什么只是局部變量?

慕容森 2019-12-06 15:02:40
有誰知道或關(guān)心推測為什么隱式類型僅限于局部變量?var thingy = new Foo();但是為什么不...var getFoo() {    return new Foo(); }
查看完整描述

3 回答

?
明月笑刀無情

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

我認(rèn)為它沒有明確回答這個(gè)問題。


為什么不?


var getFoo() {

? ? return new Foo();?

}

原因是:


如果?


class Foo {}


var GetFoo() {

? ?return GetBar();?

}


var GetBar() {

? return GetBaz();?

}


var GetBaz() {

? ?return new Foo();

}

您可以推斷出GetFoo將要返回的內(nèi)容Foo,但是您將不得不跟蹤該方法及其子對象進(jìn)行的所有調(diào)用,以推斷類型。就目前而言,C#編譯器并非旨在以這種方式工作。在推斷類型的代碼可以運(yùn)行之前,它在過程的早期需要方法和字段類型。


在純粹的美學(xué)層面上,我發(fā)現(xiàn)方法的var定義使事情變得混亂。我認(rèn)為明確表示總是有幫助的,它會意外返回導(dǎo)致簽名和其他相關(guān)方法簽名發(fā)生變化的類型,從而保護(hù)您免受腳傷。更糟糕的是,如果您返回一個(gè)返回對象的方法的值并且碰巧很幸運(yùn),那么您甚至有可能不知道自己就改變了方法鏈的所有簽名。


我認(rèn)為var方法最適合像Ruby這樣的動(dòng)態(tài)語言


查看完整回答
反對 回復(fù) 2019-12-06
?
揚(yáng)帆大魚

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

本質(zhì)上,您遇到的問題是C#(到目前為止)是一種靜態(tài)類型的語言。定義為var的局部變量仍然是靜態(tài)類型,但在語法上是隱藏的。另一方面,返回var的方法有很多含義。它更多地是一個(gè)使用接口,使用var不會獲得任何好處。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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