自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

介紹Mono C#編譯器

開發(fā) 后端
這里介紹Mono C#編譯器現(xiàn)在已經(jīng)能夠支持隱式類型的局部變量以及隱式類型的數(shù)組了。以及介紹C#中支持兩種類型推斷:隱式類型變量和隱式類型數(shù)組。

據(jù)Marek Safar稱,通過使用一種名為類型推斷(type inference)的技術(shù),Mono C#編譯器現(xiàn)在已經(jīng)能夠支持隱式類型的局部變量以及隱式類型的數(shù)組了。

在“類C”的語言,比如C#中,我們經(jīng)常使用類似“type variable = new type”這樣略顯冗余的辦法來創(chuàng)建一個對象。若是變量的類型名稱較長,或是會經(jīng)常變化,那么這樣的聲明方法更是將顯得非常乏味。

借助于***引入的“var”關(guān)鍵字,C# 3.0大大減小了這類冗余。通過這樣的聲明方式,開發(fā)者即可在得到動態(tài)創(chuàng)建類型便利的同時,也無須犧牲原有的靜態(tài)類型支持。編譯器將通過等號右面的類型信息來確定變量的實(shí)際類型。

需要注意的一點(diǎn)是,C#仍舊是早期綁定和靜態(tài)類型的。類似Visual Basic這類延遲綁定(late binding)語言中的一些常見問題(比如由拼寫錯誤造成的“missing method exception”)并不會在C#中出現(xiàn)。

雖然看上去不錯,不過添加類型推斷卻不只是為了提高開發(fā)者的那么一點(diǎn)點(diǎn)輸入速度。類型推斷是實(shí)現(xiàn)匿名類的一個必要的前提條件,而匿名類則在LINQ中被廣 泛使用。因?yàn)槟涿惒]有一個指定的類型名稱,所以若是沒有了類型推斷的支持,我們就無法在C#中創(chuàng)建該類型的實(shí)例。(VB則是通過延遲綁定來實(shí)現(xiàn)的這個 功能,不過這也帶來了“missing method exception”之類的問題。)

C#中支持兩種類型推斷:隱式類型變量和隱式類型數(shù)組。二者的實(shí)現(xiàn)基礎(chǔ)完全相同,即在編譯時將“var”替換成為分析得到的正確的變量或數(shù)組類型表達(dá)式。

若是變量的聲明和賦值不在同一行書寫的話,編譯器將不允許我們使用類型推斷。雖然從技術(shù)角度上考慮,實(shí)現(xiàn)這個功能沒有什么困難,不過Mono C#編譯器的開發(fā)團(tuán)隊(duì)可能是為了避免其帶來的復(fù)雜性,所以并沒有考慮支持這個功能。

Marek Safar還提到了兩個無法應(yīng)用類型推斷的場景。

故名思意,“隱式類型局部變量”將無法用于域變量或常量的聲明中,否則將導(dǎo)致編譯錯誤。

我無法確定為什么會設(shè)置這樣的限制,或許我有些地方考慮得也不夠全面。

注意:從技術(shù)角度考慮,匿名類也擁有類型名稱,該類型名稱是由Mono C#編譯器自動生成的。不過匿名類的名稱卻無法預(yù)料,因此我們只需要考慮其實(shí)現(xiàn)細(xì)節(jié)。換句話說,我們***將匿名類的名稱當(dāng)作根本不存在。

【編輯推薦】

  1. C#生產(chǎn)者和消費(fèi)者
  2. 詳細(xì)介紹C#基礎(chǔ)知識
  3. C#正則表達(dá)式學(xué)習(xí)筆記
  4. 簡單描述C#存儲過程
  5. 淺析C#基于TCP協(xié)議
責(zé)任編輯:佚名 來源: JavaEye
相關(guān)推薦

2009-08-06 14:59:36

C#編譯器

2009-09-01 10:35:19

C# 3.0編譯器

2009-08-10 17:12:54

C#編譯器

2009-08-18 11:27:56

配置C#命令行編譯器

2009-08-14 16:37:02

C# NGWS run

2010-01-21 09:26:53

CC++編譯器

2010-02-22 16:09:18

CentOS安裝

2010-05-28 14:55:17

Linux編程工具

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2009-08-13 17:36:54

編譯C#代碼

2010-10-20 13:43:37

C++編譯器

2013-12-10 10:53:47

shellcode

2010-01-18 10:28:15

C++編譯器

2009-08-20 17:35:00

配置C#命令行編譯器

2010-01-14 15:29:44

C++編譯器

2010-02-03 13:14:03

C++編譯器命令

2010-01-12 16:42:59

C++編譯器

2010-06-04 17:37:45

Linux編程工具

2012-06-06 09:04:54

Roslyn
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號