最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(一)

 更新時(shí)間:2015年04月10日 10:35:09   投稿:junjie  
這篇文章主要介紹了C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(一),本文講解了switch語(yǔ)句可以用來(lái)測(cè)試string型的對(duì)象、多維數(shù)組、foreach語(yǔ)句、索引器和Property等內(nèi)容,需要的朋友可以參考下

由于c#是由設(shè)計(jì).net本身的人設(shè)計(jì)出來(lái)的,所以c#才是.net上最一流的語(yǔ)言。
實(shí)際上,已經(jīng)有一百多萬(wàn)行c#代碼用于實(shí)現(xiàn).Net class framework。
要發(fā)揮出.net平臺(tái)全部的效能,只有c#才是首選。

1,switch語(yǔ)句可以用來(lái)測(cè)試string型的對(duì)象
這在c,c++,java等其他各主流語(yǔ)言中都是不可以的,唯獨(dú)c#可以。
例如string a="haha";

復(fù)制代碼 代碼如下:

switch(a)
{
    case "dfj":
     ...
    break;
    case "djkfdjkf":
    ....
    break;
    case "haha":
     .....
    break;
    default:
    ....
}

2、多維數(shù)組

這也是c#的特色,像java也沒(méi)有多維數(shù)組,只有數(shù)組的數(shù)組。
c#中不但有數(shù)組的數(shù)組,也有多維數(shù)組。
數(shù)組的數(shù)組的特點(diǎn)是(拿二維為例),每一行的元素個(gè)數(shù)可以不同。
比如int [][] c=new int[2][];

復(fù)制代碼 代碼如下:

c[0]={3,4,5,6};
c[1]={1};

c#中的多維數(shù)組的形式是這樣定義
復(fù)制代碼 代碼如下:

int [,] c=new int[3,4];

這樣的c就是一個(gè)三行四列的二維數(shù)組。

3,as與is

java中也有類(lèi)似于is的語(yǔ)法,用于在運(yùn)行時(shí)判斷一個(gè)對(duì)象的類(lèi)型,叫做instanceof。
c#中就是一個(gè)is,判斷o是不是一個(gè)string:   o is string
as則是一個(gè)很窩心的功能,它首先對(duì)這個(gè)對(duì)象進(jìn)行判斷是否是某種類(lèi)型,如果是就進(jìn)行類(lèi)
型轉(zhuǎn)換,如果不是,就返回null。
  如:   o as string

4,foreach語(yǔ)句

java5以后for語(yǔ)句就多了foreach功能,這也許就是因?yàn)橹皼](méi)有,而c#有,使得自己非常嫉妒,所以馬上給添上了。

c#中的foreach功能是非常方便的。

例如遍歷一個(gè)數(shù)組

復(fù)制代碼 代碼如下:

string[] sentences=...;
foreach(string st in sentences)
{
  ....
}

5,索引器和Property

不得不承認(rèn),我的偶像Anders實(shí)現(xiàn)出來(lái)的c#確實(shí)非常優(yōu)秀。
我把索引器和Property歸為一類(lèi)。
都是從Class中讀取某種屬性,如果知道java的POJO的人肯定知道,java bean的標(biāo)準(zhǔn)形式
就是一堆private屬性,然后一個(gè)getter,一個(gè)setter,這是標(biāo)準(zhǔn),但實(shí)現(xiàn)確實(shí)使用的普通成員方法。

c#則更絕,它直接在Class中聲明一個(gè)單獨(dú)的field,然后在語(yǔ)法中直接設(shè)計(jì)了getter和setter的簡(jiǎn)化寫(xiě)法,這就是我們熟知的Property。
如:

復(fù)制代碼 代碼如下:

public class WordCount
{
  private string m_string;
  public string OutFile
  {
     get{...}
     set{...value...}
  }
}

這樣真正做到了封閉改動(dòng),開(kāi)放擴(kuò)展。
然后就是索引器,我覺(jué)得java中只有EL才有點(diǎn)做出了類(lèi)似索引器的功能,這也只是方便了寫(xiě)jsp的人,而且很多廠商居然不在自己的容器中包含EL解析,這不得不讓sun很無(wú)奈。

索引器就是給幾個(gè)參數(shù),返回一個(gè)屬性。
如:

復(fù)制代碼 代碼如下:

public int this[string index]
{
  get{...}
  set{..value}
}
public int this[int x,int y]
{
  get{}
  set{..value}
}

6,const和readonly

這點(diǎn)c#讓我有點(diǎn)失望,對(duì)于非Ref型就是const,對(duì)于Ref型就是readonly。
而在java中,一個(gè)final就行了。當(dāng)然對(duì)于不可繼承的類(lèi),c#又有一個(gè)關(guān)鍵字sealed,雖然這讓程序的含義更明確,但確實(shí)也多記了好幾個(gè)關(guān)鍵字。

7,delegate型別

說(shuō)實(shí)話,這種奇怪的語(yǔ)法還是第一次見(jiàn)到,說(shuō)跟C++中重載operator()的功能像吧,又不是太像。
總而言之,覺(jué)得它實(shí)現(xiàn)可能就是記下一堆同類(lèi)型的函數(shù)指針,然后可以依次調(diào)用而已。
首先需要聲明一個(gè)delegate型別,注意是型別而不是對(duì)象。
如public delegate void Action();
注意既然是型別,那就跟enum,class是同等的,注意型別能夠出現(xiàn)的位置。
然后我們就可以定義這種型別的對(duì)象來(lái)使用了。

復(fù)制代碼 代碼如下:

Action aaa=new Action(...);

這個(gè)...代表的是符合這種函數(shù)原形的函數(shù)名字,注意使用delegate機(jī)制來(lái)調(diào)用,和直接調(diào)用函數(shù)本質(zhì)上沒(méi)有什么不同,就是說(shuō),當(dāng)你調(diào)用成員函數(shù)的時(shí)候,當(dāng)然你需要有一個(gè)對(duì)象,而調(diào)用靜態(tài)函數(shù)的時(shí)候,你可以直接使用類(lèi)名了。

這種delegate型別對(duì)象還有點(diǎn)特殊,它可以使用運(yùn)算符+=和-=來(lái)增加或者減少本對(duì)象所代
理的函數(shù)集,當(dāng)然還有更多的方法用來(lái)看當(dāng)前我代理了多少個(gè)函數(shù)之類(lèi)的。

復(fù)制代碼 代碼如下:

aaa+=new Action(xxx);
aaa+=new Action(ooo);

然后aaa(),意味著順序調(diào)用xxx和ooo。
aaa.GetInvocationList().length可以看到當(dāng)前代理了多少個(gè)函數(shù)。
你不用擔(dān)心代理的普通成員函數(shù)的所屬對(duì)象會(huì)被垃圾回收器回收,直到此代理對(duì)象不再引用這個(gè)函數(shù),當(dāng)然這個(gè)也是壞消息,說(shuō)不定你都忘了還有某個(gè)代理對(duì)象代理著要死的對(duì)象的函數(shù),讓這個(gè)對(duì)象老不死。

相關(guān)文章

  • C#自定義事件模擬風(fēng)吹草搖擺效果

    C#自定義事件模擬風(fēng)吹草搖擺效果

    這篇文章主要介紹了C#自定義事件模擬風(fēng)吹草搖擺效果,草地上每一顆草都監(jiān)聽(tīng)HoverTreeWindEvent事件,根據(jù)風(fēng)向(WindDdirection)調(diào)整姿態(tài)。需要的朋友可以參考下
    2017-08-08
  • C#實(shí)現(xiàn)谷歌翻譯API示例代碼

    C#實(shí)現(xiàn)谷歌翻譯API示例代碼

    本篇文章主要介紹了C#實(shí)現(xiàn)谷歌翻譯API示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • C#實(shí)現(xiàn)串口調(diào)試工具

    C#實(shí)現(xiàn)串口調(diào)試工具

    這篇文章介紹了C#實(shí)現(xiàn)串口調(diào)試工具的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • c# 實(shí)現(xiàn)計(jì)時(shí)器功能

    c# 實(shí)現(xiàn)計(jì)時(shí)器功能

    這篇文章主要介紹了c# 實(shí)現(xiàn)計(jì)時(shí)器功能的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C# WPF開(kāi)源UI控件庫(kù)MaterialDesign介紹

    C# WPF開(kāi)源UI控件庫(kù)MaterialDesign介紹

    這篇文章介紹了C# WPF開(kāi)源UI控件庫(kù)MaterialDesign,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#中Dictionary類(lèi)使用實(shí)例

    C#中Dictionary類(lèi)使用實(shí)例

    這篇文章主要介紹了C#中Dictionary類(lèi)使用實(shí)例,本文直接給出一個(gè)使用實(shí)例,包含一些Dictionary的基本用法,需要的朋友可以參考下
    2015-06-06
  • C#實(shí)現(xiàn)讀取被進(jìn)程占用的文件實(shí)現(xiàn)方法

    C#實(shí)現(xiàn)讀取被進(jìn)程占用的文件實(shí)現(xiàn)方法

    這篇文章主要介紹了C#實(shí)現(xiàn)讀取被進(jìn)程占用的文件實(shí)現(xiàn)方法,涉及C#進(jìn)程操作及文件讀取的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法及區(qū)別解析

    C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法及區(qū)別解析

    今天我們將探討C#中兩個(gè)常用的字符串處理方法:IsNullOrEmpty和IsNullOrWhiteSpace,本文中,我們將詳細(xì)解釋這兩個(gè)方法的功能和使用場(chǎng)景,并幫助您更好地理解它們之間的區(qū)別,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-07-07
  • C#軟件注冊(cè)碼的實(shí)現(xiàn)代碼

    C#軟件注冊(cè)碼的實(shí)現(xiàn)代碼

    開(kāi)發(fā)軟件時(shí),當(dāng)用到商業(yè)用途時(shí),注冊(cè)碼與激活碼就顯得很重要了,現(xiàn)在的軟件技術(shù)實(shí)在在強(qiáng)了,各種國(guó)內(nèi)外大型軟件都有注冊(cè)機(jī)制,但我們學(xué)習(xí)的是技術(shù)
    2013-05-05
  • C#中窗體重復(fù)創(chuàng)建問(wèn)題的解決方法

    C#中窗體重復(fù)創(chuàng)建問(wèn)題的解決方法

    在C#Windows窗體應(yīng)用中,我們經(jīng)常遇到這樣的問(wèn)題,當(dāng)我們觸發(fā)一個(gè)窗口命令時(shí),我連續(xù)點(diǎn)擊其中一個(gè)命令,會(huì)出現(xiàn)多個(gè)同樣的窗口,但我們是不管點(diǎn)擊多少次,都只出現(xiàn)一次,所以本文給大家介紹了C#中窗體重復(fù)創(chuàng)建問(wèn)題的解決方法,需要的朋友可以參考下
    2024-04-04

最新評(píng)論

连南| 巩义市| 伊吾县| 九寨沟县| 江门市| 大理市| 开远市| 开远市| 南安市| 开鲁县| 静宁县| 海口市| 杨浦区| 苗栗市| 潼关县| 阳高县| 遂溪县| 墨脱县| 金湖县| 裕民县| 六安市| 桦甸市| 田东县| 邻水| 炎陵县| 新和县| 宝应县| 岳西县| 彭山县| 商水县| 玉门市| 双鸭山市| 云浮市| 莒南县| 望江县| 收藏| 馆陶县| 宝兴县| 凤城市| 顺昌县| 丹棱县|