<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    靈魂-放水

    為學(xué)日益,為道日損。

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

    (1)用var聲明變量
    js里是用var聲明變量,但兩者不同的是,js里的變量沒有類型,數(shù)據(jù)才有類型,可以將一個變量指向任意的數(shù)據(jù)類型而運(yùn)行自如。
    而C#3.0里在用var聲明變量時必須對其進(jìn)行初始化,這樣編譯器能夠根據(jù)初始化的值知道該變量的類型,將部分程序員要寫的代碼交給編譯器去完成。就是說每個變量的類型還是固定的。
    例如在C#3.0里可以這樣直接聲明并初始化變量:

    var?tbTitle=new?System.Web.UI.WebControls.TextBox();

    的確省寫了很多代碼,呵呵。但是,如果你想把變量聲明和初始化分開,那var關(guān)鍵字就無能為力了。

    (2)直接構(gòu)建對象
    js里創(chuàng)建對象的快捷途徑一直令我很happy,例如:

    var?book={title:'bookTitle',?author:'nate',?id:222};

    現(xiàn)在C#3.0竟也有類似的語法了:

    var?book=new?{title="bookTitle",?author="nate",?id=222};

    其實(shí)也是由編譯器做了更多的工作,在背后自己定義了一個類,更多的原理解釋大家自己google吧。

    (3)擴(kuò)展方法
    js里給一個類擴(kuò)展方法也就是給prototype原型對象添加一個方法,非常方便。
    現(xiàn)在C#3.0也提供了類似的功能,雖然偶覺得這個新特性可能太靈活了以至影響C#的嚴(yán)謹(jǐn)性甚至軟件架構(gòu)方面的問題,但是無疑這還是很吸引人的:

    public?static?ToInt32(this?String?s){
    ?return?Convert.ToInt32();
    }

    在任意一個類中定義上述靜態(tài)方法,那么你的string對象就有直接的ToInt32方法了,是不是很方便?

    (4)創(chuàng)建對象時同時進(jìn)行初始化
    同樣是提供了一種簡潔的語法來初始化一個對象,例如:

    public?class?Point{
    ?public?int?x;
    ?public?int?y;
    }

    可以這樣實(shí)例化:

    var?point=new?Point{x=100,y=200};

    這樣可以少些多少構(gòu)造函數(shù)啊,呵呵

    (5)方便聲明集合對象
    以前對于數(shù)組可以直接聲明時初始化:

    string []?s=new?string[]{"red","blue","black","white"};

    而對于ArrayList這樣的集合類型卻沒有簡潔的語法,只能通過Add之類的方法逐一添加,
    而在C#3.0中,所有實(shí)現(xiàn)ICollection接口的類都有了簡潔的初始化語法:

    var?alColors=new?ArrayList{"red","blue","black","white"};

    (6)Lambda表達(dá)式
    盡管委托作為C#最新引入的一個概念非常優(yōu)秀,它也是事件機(jī)制的基礎(chǔ)。但用起來卻很麻煩,相信每個寫過的人都有體會,現(xiàn)在C#3.0通過Lambda表達(dá)式簡化了這個過程。
    Lambda表達(dá)式的關(guān)鍵特征是將表達(dá)式或者語句塊作為參數(shù),通過=>來直接定義一個委托,這個委托的類型會根據(jù)一系列的轉(zhuǎn)換規(guī)則,由編譯器決定,例如:

    DemoDelegate?myDelegate?=?(?)?=>?Console.WriteLine(?"Hiya!!"?)?;

    這里的()表示一個空參數(shù)的函數(shù),后面的Console.WriteLine("Hiya!!");是函數(shù)體。這樣就很方便的實(shí)現(xiàn)了委托的定義,大家不妨回憶一下在C#1.1和C#2.0中是如何的麻煩,呵呵。
    Lambda表達(dá)式不是那么容易理解,更多信息可以參見C#3.0的語言規(guī)范:
    http://news.csdn.net/news/newstopic/26/26742.shtml

    (7)查詢表達(dá)式
    雖然我對Ruby了解不多,但總感覺針對集合的查詢,直接在語言中體現(xiàn),這種靈感來源于Ruby。
    于是C#3.0又多了一項(xiàng)誘人的特性,可以通過類似Sql語句的方式來獲得需要的數(shù)據(jù),結(jié)果可能存儲于一個集合對象中或其他。
    同樣,沒有能力三言兩語將其說清楚,參見規(guī)范:
    http://news.csdn.net/news/newstopic/26/26747.shtml

    posted on 2007-01-20 19:13 放水老倌 閱讀(321) 評論(0)  編輯  收藏 所屬分類: .NET
    主站蜘蛛池模板: 亚洲AV无码专区在线亚 | 亚洲欧美熟妇综合久久久久| 扒开双腿猛进入爽爽免费视频 | 无码一区二区三区亚洲人妻| 亚洲综合精品网站在线观看| **一级毛片免费完整视| 九九精品国产亚洲AV日韩| 亚洲AV无码一区东京热久久| 色婷婷7777免费视频在线观看| h视频免费高清在线观看| 亚洲第一精品电影网| 亚洲国产成人久久一区久久| 亚洲精品视频免费在线观看| 黄色a级免费网站| 亚洲国产福利精品一区二区| 亚洲国产精品无码久久久久久曰 | 暖暖免费中文在线日本| 91亚洲va在线天线va天堂va国产 | 亚洲ⅴ国产v天堂a无码二区| 日本免费一区二区三区最新vr| 久久免费看少妇高潮V片特黄| 欧美色欧美亚洲另类二区| 7777久久亚洲中文字幕蜜桃 | 亚洲aⅴ无码专区在线观看| 亚洲成AV人在线观看天堂无码| 国产精品四虎在线观看免费| 麻豆视频免费观看| a级黄色毛片免费播放视频| 羞羞视频网站免费入口| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲日韩国产精品第一页一区| 国产成人免费ā片在线观看| 5555在线播放免费播放| 中文成人久久久久影院免费观看| 国产成人 亚洲欧洲| 亚洲第一区二区快射影院| 亚洲va无码va在线va天堂| 久久精品国产亚洲Aⅴ香蕉 | 亚洲?V乱码久久精品蜜桃 | 亚洲一级大黄大色毛片| 亚洲Av无码专区国产乱码DVD|