六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

SUNWEN圖文說明教程之----C#進(jìn)階(7)

[摘要]大家好,我是武漢華師的SUNWEN.現(xiàn)在是五月四日中午,昨天一天由于在搞自己的技術(shù)網(wǎng)站,叫"鬼子山技術(shù)站",(嘿嘿,有點(diǎn)恐怖吧!)所以沒有寫.等這個站建好后,還要大家多多捧場啊,我們這個站主要是面向教育網(wǎng)的,因?yàn)榉⻊?wù)器就在教育網(wǎng)內(nèi).好了,言歸正傳.我要說的是C#中的結(jié)構(gòu)(str...

大家好,我是武漢華師的SUNWEN.現(xiàn)在是五月四日中午,昨天一天由于在搞自己的技術(shù)網(wǎng)站,叫"鬼子山技術(shù)站",(嘿嘿,有點(diǎn)恐怖吧!)所以沒有寫.等這個站建好后,還要大家多多捧場啊,我們這個站主要是面向教育網(wǎng)的,因?yàn)榉⻊?wù)器就在教育網(wǎng)內(nèi).

好了,言歸正傳.我要說的是C#中的結(jié)構(gòu)(struct),注意,我在這里說的結(jié)構(gòu)不是指的C#的語言結(jié)構(gòu).這里所說的是一種與類(class)相對的東西,下面我就與類相對比,來說一說這個struct.

下面的這個例子講述了如何建立一個具有屬性,方法和一個字段的結(jié)構(gòu).并講述如何使用他.

000: // Structs\struct1.cs
001: using System;
002: struct SimpleStruct
003: {
004: private int xval;
005: public int X
006: {
007: get {
008: return xval;
009: }
010: set {
011: if (value < 100)
012: xval = value;
013: }
014: }
015: public void DisplayX()
016: {
017: Console.WriteLine("The stored value is: {0}", xval);
018: }
019: }
020:
021: class TestClass
022: {
023: public static void Main()
024: {
025: SimpleStruct ss = new SimpleStruct();
026: ss.X = 5;
027: ss.DisplayX();
028: }
029: }

這個例子的輸出是:

The stored value is: 5
從上面的例子中我們可以看到結(jié)構(gòu)和類似乎是一樣的.的確,如果你用類去重親寫這個程序,結(jié)果是一樣的.但是,很明顯,兩個一樣的東西是不可能一起出現(xiàn)的. 結(jié)構(gòu)(struct)是值(value)型的,而類是參考型的.這樣,你就可以用結(jié)構(gòu)建立像內(nèi)建類型那樣的對象了.

還有就是如果你用一個new關(guān)鍵字建立一個類的實(shí)例的時候,它是以堆(heap)來分配的,而用new來建立一個結(jié)構(gòu)的的實(shí)例的時候,它是以棧(stack)來分配.這會給我們提高很多性能(M$說的).好了,讓我們再來看下面的例子吧:


000: // Structs\struct2.cs
001: using System;
002:
003: class TheClass
004: {
005: public int x;
006: }
007:
008: struct TheStruct
009: {
010: public int x;
011: }
012:
013: class TestClass
014: {
015: public static void structtaker(TheStruct s)
016: {
017: s.x = 5;
018: }
019: public static void classtaker(TheClass c)
020: {
021: c.x = 5;
022: }
023: public static void Main()
024: {
025: TheStruct a = new TheStruct();
026: TheClass b = new TheClass();
027: a.x = 1;
028: b.x = 1;
029: structtaker(a);
030: classtaker(b);
031: Console.WriteLine("a.x = {0}", a.x);
032: Console.WriteLine("b.x = {0}", b.x);
033: }
034: }

這個例子的輸出是:

a.x = 1b.x = 5
從這個例子例子可以看出,當(dāng)一個結(jié)構(gòu)被傳遞到一個方法時,被傳遞的只不過是一個副本,而一個類被傳遞時,被傳遞的是一個參考.所以a.x=輸出的是1,不變,而b.x卻變了.

還有的區(qū)別就是結(jié)構(gòu)可以不用new來實(shí)例化,而類卻要.如果你不用new來實(shí)例化一個結(jié)構(gòu),那么所有的字段將仍然處于未分配狀態(tài),直到所有的字段被初始化.和類一樣,結(jié)構(gòu)可以執(zhí)行接口.更重要的是,結(jié)構(gòu)沒有繼承性,一個結(jié)構(gòu)不能從別的類繼承,也不能是別的類的基類.

例三:

interface IImage
{
void Paint();
}

struct Picture : IImage
{
public void Paint()
{
// painting code goes here
}
private int x, y, z; // other struct members
}
好了,關(guān)于結(jié)構(gòu)我就講到這了,以后還會講到的.

 




主站蜘蛛池模板: 手机在线看片国产日韩生活片 | 日本成片网 | 亚洲欧洲日本在线观看 | 五月综合久久 | 日韩精品一区二区三区中文版 | 青娱乐国产精品视频 | 亚洲欧美综合久久 | 午夜激情影视 | 特黄特色一级特色大片中文 | 一级黄色免费观看 | 亚洲小视频在线观看 | 午夜国产高清精品一区免费 | 四虎 在线播放 | 亚洲伊人久久大香线蕉在观 | 青青青免费观看在线视频网站 | 在线观看黄免费 | 中文字幕在线视频免费观看 | 一二三四高清在线手机视频 | 在线观看亚洲网站 | 天天看天天做 | 天天干天天拍天天操 | 综合图区亚洲 | 色一级| 色天使色婷婷丁香久久综合 | 亚洲男人的天堂在线视频 | 日产毛片 | 日韩一区国产二区欧美三区 | 手机亚洲第一页 | 亚洲成a人片在线观看精品 亚洲成a人片在线观看导航 | 一区二区三区网站在线免费线观看 | 日本强不卡在线观看 | 日韩精品在线免费观看 | 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 在线观看欧美日韩 | 青草精品| 欧美最猛性xxxxx(亚洲精品) | 日本一本二本视频 | 亚洲伦理在线观看 | 日本色站 | 午夜天堂| 天天做天天爱夜夜爽女人爽宅 |