雜項技術(shù)以及語言的未來發(fā)展
屬性訪問器保護級別的變化 C# 2.0 允許我們對一個屬性的get和set訪問器使用不同的訪問級別修飾符:
class Customer
{
private string name;
...
public string Name
{
get{return ;}
internal set(=value;}
}
...
}
一些注意點
屬性訪問器(get或set)上應(yīng)用的訪問修飾符必須“小于”屬性上應(yīng)用的訪問修飾符;“小于”的意思即“更嚴格”,例如protected小于public。
只能在一個屬性訪問器(get或set)上指定比屬性上的訪問修飾符“更小”的訪問修飾符。
對于接口中屬性的聲明,不能給屬性訪問器(get或set)指定任何訪問修飾符,只能默認為public。
屬性訪問器保護級別的變化規(guī)則完全適用于C#的索引器。
---------------------------------------------
名稱空間別名限定符的引入
C# 2.0 允許我們使命名空間別名限定符(::)來避免不同命名空間中類型名稱沖突的問題:
using SC = llections;
using ZC = llections;
class Program
{
static void main()
{
ZC::ArrayList list = new ZC::ArrayList();
...
趕上百度大更新了 }
}
一些注意點
當使用命名空間別名限定符(::)時,如果ZC:ArrayList,編譯器可以確保這是一個只適用于“名稱空間別名”的限制符,不會辨析為其他類型、或者成員限定符(.)。
關(guān)鍵字global可以放在命名空間別名限定符(::)的左邊,它使得編譯器只去搜索那些所有的命名空間,而不會去搜索其他的類型、或成員。
盡可能地使用命名空間別名限定符(::),而減少使用點號(.)這樣的通配限定符。
---------------------------------------------
pragma指示符的引入
C# 2.0 允許我們使用命名空間別名限定符(::)來避免不同命名空間中類型名稱沖突的問題:
class program
{
[Obsolete]
static void Foo(){...}
static void Main()
{
#pragma warning disable 612
Foo();
#pragma warning restore 612
}
}
幾個注意點
目前pragma指示符只支持#pragma warning
#pragma warning disable 可以禁止掉任何編譯器警告信息。
#pragma warning restore 可以恢復(fù)被disable掉的任何編譯器警告信息。
可以在disable和restore后面跟上具體的警告代碼號,從而來禁止或者恢復(fù)特定的警告信息。
#prama是一個編譯預(yù)處理功能,不影響任何代碼運行機制。
---------------------------------------------
Conditional特性類的引入
C# 2.0 允許我們使用Conditional特性類來告訴編譯器根據(jù)“特定的預(yù)定義指示符條件”來在類上應(yīng)用特性。
#define DEBUG
using System;
using agnostics;
[Conditional(\"DEBUG\")]
public class TestAttribute : Attribute{}
[Test]
class MyClass{}
幾個注意點
如果定義了條件指示符,如#define DEBUG,那么編譯器將在MyClass類上應(yīng)用TestAttribute特性。
如果沒有定義條件指示符,如#undef DEBUG,MyClass類照樣可以正常使用,但是其上將不在應(yīng)用TestAttribute特性。
注意區(qū)別C# 2.0 中的Conditional特性類和C# 1.0中的Conditional特性方法。
定長buffer的引入
C# 2.0 引入定長來使得我們可以在結(jié)構(gòu)里聲明C風(fēng)格的數(shù)組,從而更加方便地實現(xiàn)托管代碼和非托管代碼的互操作:
unsafe struct MyClass
{
public fixed int x[5];
public fixed int y[10];
public fixed int z[100];
}
幾個注意點
定長buffer只能使用在unsafe代碼的上下文中,不可以在非unsafe的代碼中使用。
使用定長buffer所定義的字段在結(jié)構(gòu)類型的實例對象中將按照它們的聲明順序來進行內(nèi)存布局。
注意區(qū)別unsafe代碼中的定長buffer和我們通常使用的托管數(shù)組。
定長buffer主要應(yīng)用在托管代碼和非托管代碼互操作的情況,除此之外,我們一般使用托管數(shù)組。
---------------------------------------------
C# 3.0 與未來發(fā)展
C# 2.0 的核心機制在于泛行編程的引入,它賦予了類型參數(shù)式多態(tài)的能力,將對今后的C#代碼構(gòu)造有重要影響。
研發(fā)中的C# 3.0 將XML、SQL兩中數(shù)據(jù)處理技術(shù)引入到C#這樣的強類型語言中,極大地豐富了C#語言的數(shù)據(jù)處理能力,是一個極具遠見的創(chuàng)新。
C#語言的發(fā)展越來越多體現(xiàn)融合“設(shè)計模式+庫”的思想,“語言的發(fā)展就是庫的發(fā)展”。
查看本文來源
石嘴山白癜風(fēng)醫(yī)院哪家好一品紅
銀川陰道炎治療多少錢
- 73歲“劉羅鍋”一生不接策劃,遭13家公司封,放話不再與王剛密切合作
- 公募行業(yè)重磅新規(guī)來了!薪酬遞延支付不少于3年,F(xiàn)und經(jīng)理遞延支付金額不低于40%
- 男子自己手寫通行證倒賣物資牟利 涉?zhèn)卧熳C件被行拘
- 魏縣公安局關(guān)于依法打擊處理遵守疫情期間封控管理規(guī)定人員的通告
- 特朗普小女兒逆風(fēng)翻盤氣質(zhì)直逼伊萬卡!一襲黑裙秀事業(yè)線,真贊嘆
- 奧巴馬:拜登沒有前往烏克蘭的計劃
- 烏魯木齊小學(xué)將眼健康科普搬進課堂:常態(tài)呵護孩童“心靈的窗戶”
- 張衛(wèi)健男朋友為他流產(chǎn)不育,相愛21年仍甜蜜如初,46歲打扮時尚時尚
- 創(chuàng)新質(zhì)量和安全管理,患者及其家屬齊加入
- 紅樓夢中,林黛玉的病為何久治不愈?緣故就在薛寶釵吃的藥丸里
- 給狗狗洗澡的注意事項都有哪些位置
- 具有哪些特征的德國牧羊犬是不能買的位置