欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

類是數據類型,對象是內存的具體分配

系統 1698 0

對于初學面向對象的人來說,往往很疑惑什么是對象,什么是類。在面向對象的編程領域中,我們需要明確一個事實:所有的類型必須被明確的表示,而不是被其他數據類型來替代。

類是 C# 中功能最為強大的數據類型,它定義了數據類型的數據和行為。然后,程序員可以創建作為此類的實例的對象。類支持繼承,而繼承是面向對象編程的基礎部分。

比如我們在前面了解的一個關于洗牌的過程,在前面的代碼中,我們計算和產生的不是真正意義上的撲克牌,而是字符串!

如果要真正的描述撲克牌,我們必須要有一個撲克牌的數據類型,而這個類型.NET Framework顯然沒有提供,因此我們需要自己編寫一個撲克牌的類型。所以我們需要定義一個撲克牌的類型,我們把自己定義的類型一般稱為類。

/// <summary>

/// 撲克牌

/// </summary>

public class Poker

{

/// <summary>

/// 撲克牌的花色

/// </summary>

public string Style;

/// <summary>

/// 撲克排的牌面

/// </summary>

public string Title;

/// <summary>

/// 撲克牌的值

/// </summary>

public int Value;

}

上述代碼描述我們使用關鍵字class定義了一個類,該類的名字叫Poker。這個類中定義了3個變量:Style、Title和Value。

class 關鍵字前面是訪問級別。由于在該例中使用 public,因此任何人都可以基于該類創建對象。類的名稱位于 class 關鍵字的后面。定義的其余部分是類的主體,用于定義行為和數據。類的字段、屬性、方法和事件統稱為“類成員”。

要使用這個類,我們需要對其實例化。所謂的實例化,說白了就是通知編譯器到內存中開辟一個空間,以存儲一些值。通過使用 new 關鍵字(后跟對象將基于的類的名稱)可以創建對象:

Poker pokerA = new Poker(); //實例化Poker類

Poker pokerK = new Poker(); //實例化Poker類

創建類的實例后,將向程序員傳遞回對該對象的引用。在前面的示例中,pokerA和pokerK是對基于 Poker的對象的引用。此引用引用新對象,但不包含對象數據本身。

static void Main(string[] args)

{

Poker pokerA = new Poker(); //實例化Poker類

pokerA.Style = ((char)4).ToString();

pokerA.Title = "A";

pokerA.Value = 1;

System.Console.WriteLine("{0}{1}", pokerA.Style, pokerA.Title);

Poker pokerK = new Poker(); //實例化Poker類

pokerK.Style = ((char)4).ToString();

pokerK.Title = "K";

pokerK.Value = 13;

System.Console.WriteLine("{0}{1}", pokerK.Style, pokerK.Title);

}

我們得到的結果如圖3.3.1:

clip_image002

圖3.3.1

Poker pokerA = new Poker()和Poker pokerK = new Poker()代碼用以產生一個實例化Poker對象。通俗的說就是,通知編譯器,我需要一個新的空間,這個空間請按Poker類的定義來分配空間,并且命名為pokerA或pokerK。而Style、Title和Value是Poker類的值,存儲了Poker具體的內容。

如果要比較兩張牌對象有兩種方案:

一、比較兩張牌對象是不是在同一個內存空間,如果是的話,這兩個對象完全相等。

二、比較兩張牌對象的值是不是各自相等,如果是的話,表示這兩張牌的值或牌面一樣。

static void Main(string[] args)

{

Poker pokerA1 = new Poker(); //實例化Poker類

pokerA1.Style = ((char)4).ToString();

pokerA1.Title = "A";

pokerA1.Value = 1;

System.Console.WriteLine("{0}{1}", pokerA1.Style, pokerA1.Title);

Poker pokerA2 = new Poker(); //實例化Poker類

pokerA2.Style = ((char)4).ToString();

pokerA2.Title = "A";

pokerA2.Value = 1;

System.Console.WriteLine("{0}{1}", pokerA2.Style, pokerA2.Title);

System.Console.WriteLine(pokerA1 == pokerA2); //在兩個內存空間中,兩個對象不相等

System.Console.WriteLine(pokerA1.Value == pokerA2.Value);// 兩張牌的值相等

}

運行的結果如圖3.3.2:

clip_image004

圖3.3.2

初學者很不了解對象的相等和對象的值相等是什么意思,用一個通俗的場景來說,有兩個雙胞胎兄弟,長的是一模一樣,它們的衣服值一樣,它們的外觀值一樣,它們的所有的一切的值都一樣,但它們就是兩個人,而不能說是同一個人。

而筆者名字叫“王豫翔”,在QQ的昵稱上叫“熾天使”,MSN叫“害羞的獅子王”,但其實都是同一個人。

以下代碼描述了兩個對象相等,初學者要牢記,如果兩個對象相等,任意的對象改變的值,會影響另一個對象的值,因為它們使用的是共同的內存。

static void Main(string[] args)

{

Poker pokerA1 = new Poker(); //實例化Poker類

pokerA1.Style = ((char)4).ToString();

pokerA1.Title = "A";

pokerA1.Value = 1;

System.Console.WriteLine("{0}{1}", pokerA1.Style, pokerA1.Title);

Poker pokerA2 = new Poker(); //實例化Poker類

pokerA2 = pokerA1; //將pokerA1的內存空間的地址賦值給pokerA2

System.Console.WriteLine(pokerA1 == pokerA2);

System.Console.WriteLine(pokerA1.Value == pokerA2.Value);

pokerA2.Style = ((char)5).ToString(); //pokerA2改變了花色

System.Console.WriteLine("{0}{1}", pokerA1.Style, pokerA1.Title); //pokerA1的花色值也改變了

}

觀察圖3.3.3結果,并理解對象的引用關系。

clip_image006

圖3.3.3

初學者注意

出現上述原因是應為C#的數據類型分為:值類型和引用類型。對象是引用類型。具體的細節在后面我們將逐步介紹,稍安毋躁。

類是數據類型,對象是內存的具體分配


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩精品免费 | 欧美精品99毛片免费高清观看 | 成人午夜免费视频毛片 | 999宝藏网| 久操伊人 | 最新国产网址 | 色欲天天婬色婬香影院 | 在线观看国产日韩欧美 | 欧美日韩福利视频 | 欧美黄色一区 | 久久精品一区二区三区四区 | 久久中文网 | 亚洲精品一区在线观看 | 四虎影视免费在线观看 | 欧洲成人一区 | 日本一级淫片免费看 | 国产精品毛片久久久久久 | 成人免费淫片aa视频免费 | 91美女在线观看 | 久草五月天| 亚洲免费视 | 成熟自由日本语热亚洲人 | 久久久无码精品一区二区三区 | 国产免费一级高清淫日本片 | 成人国产精品一区 | 久久精品小短片 | 国产欧美日韩精品一区二 | 一级做a | 日本字幕在线观看 | 91视频h| 色永久| 欧美第一页草草影院浮力 | 欧美激情一区二区三级高清视频 | 久久精品久久精品 | 久久精品一 | 99精品一区二区免费视频 | 久久伊人精品 | 欧洲中文字幕 | 色综合天天综合网看在线影院 | 亚洲视频区 | 日韩不卡在线 |