.NET或?qū)⒁腩?lèi)型類(lèi)和擴(kuò)展_2

背景:


閱讀新聞

.NET或?qū)⒁腩?lèi)型類(lèi)和擴(kuò)展

[日期:2017-04-18]

來(lái)源:infoq.com

作者:Jonathan Allen ,譯者 謝麗

[字體:大 中 小]

類(lèi)型類(lèi)是另外一項(xiàng)正被考慮引入.NET未來(lái)版本的特性越妈。在提案“外觀和擴(kuò)展(Shapes and Extensions)”中,該特性被稱(chēng)為外觀,它們將大幅提升.NET泛型的能力。Mads Torgersen這樣描述類(lèi)型類(lèi):

接口抽象的是作為類(lèi)型實(shí)例的對(duì)象和值的“外觀(shape)”削葱。從根本上講,類(lèi)型類(lèi)背后的思想是抽象類(lèi)型本身的外觀。而且,當(dāng)通過(guò)類(lèi)型聲明引入需要的類(lèi)型實(shí)現(xiàn)一個(gè)接口時(shí),其他人可以在單獨(dú)的代碼中實(shí)現(xiàn)類(lèi)型類(lèi)瓣蛀。

類(lèi)型類(lèi)解決了一個(gè)長(zhǎng)期存在的接口問(wèn)題:它們無(wú)法處理靜態(tài)函數(shù)或操作符重載附迷。這導(dǎo)致了一些問(wèn)題,比如,在數(shù)學(xué)庫(kù)中,對(duì)于不同的數(shù)值數(shù)據(jù)類(lèi)型,需要反復(fù)聲明相同的函數(shù)。

Mads總結(jié)道:

一般來(lái)說(shuō),外觀的聲明和接口聲明非常像,但它:

幾乎可以定義任意類(lèi)型的成員(包括靜態(tài)成員)

可以通過(guò)擴(kuò)展實(shí)現(xiàn)

可以在特定的地方像類(lèi)型一樣使用

最后一個(gè)限制很重要:外觀不是類(lèi)型碱呼。外觀的主要目的是作為泛型的一種約束,限定類(lèi)型參數(shù),保證它們有正確的外觀,并允許泛型聲明體使用那個(gè)外觀境输。

與外觀的思想緊密相關(guān)的是一種經(jīng)過(guò)改進(jìn)的擴(kuò)展語(yǔ)法蔗牡。擴(kuò)展結(jié)構(gòu)幾乎可以為類(lèi)型類(lèi)提供任何東西,而不只是方法擴(kuò)展⌒崞剩考慮下面這個(gè)最簡(jiǎn)單的例子:

Int32類(lèi)型已經(jīng)提供了大部分內(nèi)容,但它缺少zero屬性辩越。擴(kuò)展可以修復(fù)這個(gè)問(wèn)題:

然后,你可以像下面這樣使用它:

實(shí)現(xiàn)

這實(shí)現(xiàn)起來(lái)需要一些接口和結(jié)構(gòu)方面的技巧。

Shapes被翻譯成了接口,每個(gè)成員(甚至是靜態(tài)成員)都轉(zhuǎn)換成了接口中的實(shí)例成員;

擴(kuò)展被翻譯成了結(jié)構(gòu),每個(gè)成員(甚至是靜態(tài)成員)轉(zhuǎn)換成了結(jié)構(gòu)中的實(shí)例成員;

如果擴(kuò)展實(shí)現(xiàn)了一個(gè)或多個(gè)彎管,則底層的結(jié)構(gòu)實(shí)現(xiàn)了那些外觀的底層接口信粮。

通常,上述結(jié)構(gòu)被稱(chēng)為“見(jiàn)證結(jié)構(gòu)(witness struct)”区匣。它的存在可以證明一個(gè)類(lèi)遵循外觀的規(guī)則〗海或者換句話說(shuō),該類(lèi)在類(lèi)型類(lèi)中亏钩。

編譯器會(huì)將上述AddAll方法翻譯成如下代碼:

然后,上述見(jiàn)證結(jié)構(gòu)就可以用于向AddAll方法提供必要的功能。結(jié)構(gòu)可以直接在類(lèi)型上調(diào)用方法或者根據(jù)需要使用擴(kuò)展結(jié)構(gòu)欺旧。

在類(lèi)和接口中實(shí)現(xiàn)外觀

使用和我們擴(kuò)展基類(lèi)及實(shí)現(xiàn)接口一樣的語(yǔ)法,類(lèi)可以顯式實(shí)現(xiàn)一個(gè)外觀姑丑。然后,編譯器會(huì)提供相應(yīng)的見(jiàn)證結(jié)構(gòu)。

也可以將接口標(biāo)記為滿(mǎn)足外觀的要求辞友。下面是一個(gè)例子:

由于IComparable和理論上的類(lèi)型類(lèi)之間存在一對(duì)一關(guān)系,所以我們不需要為擴(kuò)展結(jié)構(gòu)提供擴(kuò)展體栅哀。

泛型類(lèi)型

事實(shí)證明,泛型類(lèi)型有他們自己的問(wèn)題。和泛型方法一樣,向泛型類(lèi)添加外觀或者類(lèi)型類(lèi)作為類(lèi)型約束需要額外提供一個(gè)類(lèi)型參數(shù)称龙。在泛型類(lèi)上,由于類(lèi)型參數(shù)的數(shù)量是其名稱(chēng)的一部分,所以這會(huì)導(dǎo)致它和其它名稱(chēng)相同的泛型類(lèi)型發(fā)生沖突留拾。

擴(kuò)展外觀

擴(kuò)展結(jié)構(gòu)不僅可以用于實(shí)現(xiàn)外觀,還可以擴(kuò)展它們。因此,你可以向現(xiàn)有的外觀中添加新方法鲫尊、靜態(tài)方法及操作符痴柔。正如擴(kuò)展方法一樣,語(yǔ)法是一樣的,就像它們?cè)诘讓宇?lèi)型上直接定義了一樣。

評(píng)論

總的來(lái)說(shuō),人們對(duì)于該特性的反應(yīng)不錯(cuò)疫向。不過(guò),也有一些修改請(qǐng)求咳蔚。例如,外觀目前必須顯式實(shí)現(xiàn)豪嚎。有些開(kāi)發(fā)人員希望,如果特定的類(lèi)或接口不需要額外擴(kuò)展方法時(shí),就由編譯器隱式實(shí)現(xiàn)。Mads列舉了這樣做的一些問(wèn)題:

那可能會(huì)導(dǎo)致,為了見(jiàn)證以相同的方式應(yīng)用到同一類(lèi)型的同一個(gè)外觀而生成許多結(jié)構(gòu)類(lèi)型,有生成的類(lèi)型過(guò)度擴(kuò)散的風(fēng)險(xiǎn)谈火。如果編譯器比較聰明,每個(gè)程序集只生成一個(gè),或許可以緩解這種情況,但我們從匿名類(lèi)型了解到,這種重復(fù)數(shù)據(jù)刪除技術(shù)非常困難,而且很容易出錯(cuò)侈询。

如果我們?cè)试S泛型類(lèi)型擁有外觀約束的類(lèi)型參數(shù),那么同一個(gè)東西擁有多個(gè)見(jiàn)證結(jié)構(gòu)會(huì)導(dǎo)致實(shí)例化的泛型類(lèi)型具有不同的類(lèi)型標(biāo)識(shí),無(wú)法互換。

人們還擔(dān)心外觀和擴(kuò)展綁定得太緊糯耍。他們認(rèn)為,那將來(lái)可能會(huì)引起混淆扔字。

對(duì)此,Mads答復(fù)說(shuō):

合并:在我的提案里,“擴(kuò)展”實(shí)際上合并了多個(gè)問(wèn)題:

[……]

我覺(jué)得,對(duì)于上述服務(wù)于所有這些目的的語(yǔ)言機(jī)制,有太多內(nèi)容需要討論——但歸根結(jié)底,它們的關(guān)系非常密切。如果有一個(gè)提案可以將它們清晰地分開(kāi),那將是非常有意義的温技。那也許會(huì)更加簡(jiǎn)單有效啦租。

查看英文原文:.NET Futures: Type Classes and Extensions

本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2017-04/142894.htm

linux

在Elasticsearch中應(yīng)用機(jī)器學(xué)習(xí)排序LTR

Log4J的Appenders配置

相關(guān)資訊

.NET

MailKit正式替換了.NET的 (今 09:11)

Microsoft規(guī)劃了.NET的未來(lái)發(fā)展 (02月09日)

.NET平臺(tái)上的分布式編程框架MBrace (11/23/2015 10:22:19)

.NET 誕生 15 周年 (02月14日)

為什么.NET感覺(jué)上比Java差一點(diǎn) (10/02/2016 08:11:39)

.Net開(kāi)發(fā)框架最終版將與Windows 10 (07/2九度快排系統(tǒng) https://www.190seo.com5/2015 05:49:19)

本文評(píng)論

查看全部評(píng)論 (0)

表情: 表情

姓名:

匿名

字?jǐn)?shù)

同意評(píng)論聲明

評(píng)論聲明

尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)

承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任

本站管理人員有權(quán)保留或刪除其管轄留言中的任意內(nèi)容

本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用您的評(píng)論

參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款

最新資訊

Log4J的Appenders配置

CentOS虛擬機(jī)和物理機(jī)共享文件夾實(shí)現(xiàn)

CentOS7.0下Rsync+sersync實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)增量

Google Hire 首頁(yè)默默推出,LinkedIn 要小

.NET或?qū)⒁腩?lèi)型類(lèi)和擴(kuò)展

2017年會(huì)是Serverless爆發(fā)之年嗎?

Apache Tomcat信息泄露漏洞(CVE-2017-5651)

Trend Micro Threat Discovery Appliance命

Google gRPC 堆緩沖區(qū)溢出漏洞(CVE-2017-

Shadow Brokers 最新泄密暴露 NSA 與

背景:

閱讀新聞

Google Hire 首頁(yè)默默推出,LinkedIn 要小心了?

[日期:2017-04-18]

來(lái)源:癮科技

作者:Linux

[字體:大 中 小]

Google 即將要有個(gè)新的「人力雇用」用途的網(wǎng)站推出,它就叫做 Google Hire(怎么不叫 GooJob)。這個(gè)已經(jīng)開(kāi)放首頁(yè)但仍不可登入的入口網(wǎng)站,根據(jù)官方向我們 Engadget 所提供的說(shuō)法,這是個(gè)希望幫助 G Suite 用戶(hù)更有效率管理人力雇用事宜的開(kāi)發(fā)中產(chǎn)品荒揣。而盡管部分網(wǎng)站猜測(cè) Google Hire 可能會(huì)有類(lèi)似 LinkedIn 的求職社交功能,甚至有隱私方面的疑慮。不過(guò)這點(diǎn)根據(jù)官方在信件中給予我們的回覆,這個(gè)網(wǎng)站將只被用于接受求職申請(qǐng),并不會(huì)將相關(guān)私人信息乃至于 Google 中的使用者信息予以分享,所以現(xiàn)階段理應(yīng)是不太需要擔(dān)心會(huì)有這方面的狀況焊刹。

其實(shí)不僅 Google,就連 Facebook 近幾個(gè)月也已經(jīng)開(kāi)始提供求職相關(guān)的功能了,由此可見(jiàn)各家似乎都有點(diǎn)想利用自己在相關(guān)領(lǐng)域上的優(yōu)勢(shì),來(lái)挑戰(zhàn) LinkedIn 所開(kāi)啟的求職市場(chǎng)應(yīng)用系任。但到底能有多少效果或者是多高的使用率,顯然就還有待未來(lái)正式上線才能見(jiàn)真章了。

經(jīng)由: Engadget, Daily Mail, Android Authority

來(lái)源: Axios

本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2017-04/142895.htm

linux

2017年會(huì)是Serverless爆發(fā)之年嗎?

YouTube 放寬移動(dòng)設(shè)備直播資格,1000 以上訂閱數(shù)即可使用

相關(guān)資訊

LinkedIn Google Hire

LinkedIn 開(kāi)源 Kafka Cruise (今 10:57)

俄羅斯開(kāi)始屏蔽LinkedIn (11/17/2016 21:49:58)

LinkedIn開(kāi)源軟件項(xiàng)目數(shù)量已經(jīng)超過(guò) (08/08/2016 08:32:18)

搜索巨人開(kāi)發(fā)招聘網(wǎng)站 Google Hire (04月17日)

LinkedIn Test Butler旨在改進(jìn) (08/31/2016 08:42:46)

LinkedIn的工程師詳述了生產(chǎn)環(huán)境下 (06/22/2016 09:13:45)

本文評(píng)論

查看全部評(píng)論 (0)

表情: 表情

姓名:

匿名

字?jǐn)?shù)

同意評(píng)論聲明

評(píng)論聲明

尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)

承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任

本站管理人員有權(quán)保留或刪除其管轄留言中的任意內(nèi)容

本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用您的評(píng)論

參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款

最新資訊

LinkedIn 開(kāi)源 Kafka Cruise Control

新勒索軟件“Defray”可通過(guò)Microsoft Word

排序算法之冒泡排序詳解

C++多態(tài)分析

Ubuntu 16.04 安裝搭建Red5流媒體服務(wù)器

Ubuntu 16.04下交叉編譯ImageMagick

關(guān)于開(kāi)源軟件,你所不知道的那些事情

Go 1.9引入了類(lèi)型別名并提升了運(yùn)行時(shí)和工具

GitHub正在尋找新的CEO

發(fā)達(dá)國(guó)家與發(fā)展中國(guó)家編程語(yǔ)言技術(shù)的分布差

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虐块,一起剝皮案震驚了整個(gè)濱河市俩滥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贺奠,老刑警劉巖霜旧,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異儡率,居然都是意外死亡挂据,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)儿普,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)崎逃,“玉大人,你說(shuō)我怎么就攤上這事眉孩「錾埽” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵浪汪,是天一觀的道長(zhǎng)巴柿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)死遭,這世上最難降的妖魔是什么广恢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮呀潭,結(jié)果婚禮上袁波,老公的妹妹穿的比我還像新娘瓦阐。我一直安慰自己,他們只是感情好篷牌,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布睡蟋。 她就那樣靜靜地躺著,像睡著了一般枷颊。 火紅的嫁衣襯著肌膚如雪戳杀。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天夭苗,我揣著相機(jī)與錄音信卡,去河邊找鬼。 笑死题造,一個(gè)胖子當(dāng)著我的面吹牛傍菇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播界赔,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丢习,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了淮悼?” 一聲冷哼從身側(cè)響起咐低,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袜腥,沒(méi)想到半個(gè)月后见擦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羹令,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年鲤屡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片福侈。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡执俩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出癌刽,到底是詐尸還是另有隱情役首,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布显拜,位于F島的核電站衡奥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏远荠。R本人自食惡果不足惜矮固,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧档址,春花似錦盹兢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尼摹,卻和暖如春见芹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蠢涝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工玄呛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人和二。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓徘铝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親惯吕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惕它,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,318評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件混埠、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評(píng)論 4 61
  • 天作孽半醉,猶可違;自作孽劝术,不可活缩多。 《孟子》 句意:天降的災(zāi)禍還可以躲避,自己造成的罪孽是無(wú)法逃脫的养晋。
    xcy無(wú)名閱讀 697評(píng)論 0 0
  • 個(gè)人簡(jiǎn)介 李振海衬吆,男,號(hào):一弘弘一绳泉。出生于江蘇無(wú)錫逊抡,十歲從師習(xí)連環(huán)畫(huà),書(shū)法零酪。1976年畢業(yè)于無(wú)錫輕工業(yè)學(xué)...
    藝術(shù)范閱讀 4,395評(píng)論 0 0
  • 為了做好閱讀啟蒙冒嫡,抓住8歲以前這個(gè)黃金時(shí)期培養(yǎng)孩子的閱讀興趣和能力拇勃,小種子班每天有一個(gè)常規(guī)家庭作業(yè):家長(zhǎng)...
    H家女閱讀 1,160評(píng)論 0 1