NET C# 類別class 的宣告與封裝和使用練習
文章推薦指數: 80 %
在C# 中,類別是使用 Class 關鍵字來進行定義。
... 這個程式碼片段,宣告了一個自動建置的屬性Y,在這樣的用法中,我們並不需要額外的定義一個欄位_Y ...
2017年9月6日星期三
.NETC#類別class的宣告與封裝和使用練習
在C#中,類別是使用 Class 關鍵字來進行定義。
了解更多關於[類別]
了解更多關於[類別與物件]
了解更多關於[C#程式設計手冊]
我們在這裡會進行類別的成員宣告與定義,其中最常用的就是 欄位、屬性、建構函式、方法 的宣告。
在這個類別筆記中,我們定義了底下的類別
在這個類別中,我們定義了一個完整屬性X的宣告,你可以使用程式碼片段 propfull 來快速產生這個定義程式碼,這裡表示了屬性X的實際儲存內容,將會儲存在欄位_X內,當您要進行讀取/寫入動作的時候,是透過了get存取子和set存取子這兩個方法來間接存取欄位_X。
另外,我們使用程式碼片段 prop 這個程式碼片段,宣告了一個自動建置的屬性Y,在這樣的用法中,我們並不需要額外的定義一個欄位_Y,因為,編譯器會幫我們自動產生這些程式碼。
使用了自動建置的屬性,大幅簡化了我們在屬性上的程式碼撰寫,也讓我們的程式碼更加的清爽,最重要的是,這兩種做法的最終效果,都是一樣的。
在這個類別中,我們定義了一個建構函式,這個建構函式需要提供兩個參數。
若我們在類別中沒有定義任何建構函式,編譯器會自動幫我們產生一個預設建構函式(也就是沒有任何參數)。
不過,若我們在類別中有建立了任何建構函式,則,當我們要使用預設建構函式的時候,我們是需要自行定義出這個預設建構函式,否則,我們是無法使用預設建構函式的。
建構函式是我們建立一個類別的執行個體,也就是物件,必須要呼叫的;我們透過了建構函式,可以在其裡面針對這個類別的各個資料進行初始化的動作,設定這些資料的預設值。
最後,我們學習如何在類別中產生這個類別應該提供的行為,也就是方法。
Length() 這個方法我們使用了 private 存取修飾詞,宣告這個函式僅能夠在類別內來呼叫,我們會在類別內的 Print()來呼叫,而 Print() 方法的存取修飾詞為 public,這表示,任何程式碼皆可以透過執行個體來執行這個方法。
publicclassMyPoint
{
#region座標點(使用region來做到程式碼區隔)
//可以使用程式碼片段propfull
privatedouble_X;
publicdoubleX
{
get{return_X;}
set{_X=value;}
}
//可以使用程式碼片段prop
publicdoubleY{get;set;}
#endregion
//可以使用程式碼片段ctor
publicMyPoint(doublex,doubley)
{
X=x;
Y=y;
}
///
您只能夠透過建構函式 MyPoint(doublex,doubley) 與new運算子來建立一個物件。
這個程式碼 MyPointfooObject4; 表示宣告一個物件變數 fooObject4;而這個物件變數並沒有指向任何參考物件,因此,這個變數物件的參考值為null,也就是沒有任何內容。
在底下的測試程式碼中,最為重要的觀念就是,
fooObject4=fooObject2;
這表示了 fooObject4 與 fooObject2; 這兩個物件同時指向了一個相同的物件,而不是產生一個新的物件執行個體,並且讓 fooObject4 物件變數指向這個物件。
不過,若 MyPoint 若是一個結構,則剛剛的設定行為,就會產生另外一個意義。
staticvoidMain(string[]args)
{
//宣告一個MyPoint類別的物件變數,並且指向新產生的MyPoint物件
//MyPointfooObject1=newMyPoint();//這樣為什麼會發生錯誤
//宣告一個MyPoint類別的物件變數,並且指向新產生的MyPoint物件
MyPointfooObject2=newMyPoint(5,4);
//宣告一個MyPoint類別的物件變數,並且指向新產生的MyPoint物件
varfooObject3=newMyPoint(5,4);
//宣告一個MyPoint類別的物件變數
MyPointfooObject4;
//將物件變數的參考值指向另外一個MyPoint物件
fooObject4=fooObject2;
//在這裡,你可以呼叫Length()方法嗎?
Console.WriteLine($"X:{fooObject2.X},Y:{fooObject2.Y}/更多詳細資訊{fooObject2.Print()}");
Console.WriteLine($"X:{fooObject3.X},Y:{fooObject3.Y}/更多詳細資訊{fooObject3.Print()}");
Console.WriteLine($"X:{fooObject4.X},Y:{fooObject4.Y}/更多詳細資訊{fooObject4.Print()}");
Console.WriteLine("Pressanykeyforcontinuing...");
Console.ReadKey();
Console.WriteLine("修改物件的內容");
fooObject2.X=7.0;
fooObject3.X=8.0;
fooObject4.X=9.0;
Console.WriteLine($"X:{fooObject2.X},Y:{fooObject2.Y}/更多詳細資訊{fooObject2.Print()}");
Console.WriteLine($"X:{fooObject3.X},Y:{fooObject3.Y}/更多詳細資訊{fooObject3.Print()}");
Console.WriteLine($"X:{fooObject4.X},Y:{fooObject4.Y}/更多詳細資訊{fooObject4.Print()}");
Console.WriteLine("Pressanykeyforcontinuing...");
Console.ReadKey();
}
了解更多關於[類別]
了解更多關於[類別與物件]
了解更多關於[C#程式設計手冊]
By
Vulcanlee
於
9月06,2017
以電子郵件傳送這篇文章BlogThis!分享至Twitter分享至Facebook分享到Pinterest
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言(Atom)
若這些文章對你有幫助,歡迎贊助
贊助一杯咖啡
Google自訂搜尋
熱門文章
C#非同步工作Task的建立、執行、傳遞參數、結束、回傳值、取消、例外異常之使用教學
C#非同步工作Task的建立、執行、傳遞參數、結束、回傳值、取消、例外異常之使用教學深度研究:C#平行/並行計算Parallel.For隱藏在細節背後的惡魔,你所不瞭解的平行與併行計算在上一篇文章 C#執行緒Thread/ThreadP...
C#執行緒Thread/ThreadPool的建立、執行、傳遞參數、結束、回傳值、取消、例外異常之使用教學
C#執行緒Thread/ThreadPool的建立、執行、傳遞參數、結束、回傳值、取消、例外異常之使用教學深度研究: C#平行/並行計算Parallel.For隱藏在細節背後的惡魔,你所不瞭解的平行與併行計算在這篇文章中,將會來說明如何在.NE...
C#HttpClientWebAPI:5.使用POST要求與application/x-www-form-urlencoded類型編碼內容呼叫WebAPI
現在,我們要進入使用POST要求的使用方式介紹,在上一篇 C#HttpClientWebAPI:4.使用GET要求與QueryString呼叫WebAPI 文章中,我們看到了第一種傳遞資料到後端WebAPI伺服器的方法,那就是使用查詢字串...
C#HttpClientWebAPI:7.使用POST要求與JSON編碼內容呼叫WebAPI
若你正在觀看此篇文章,則應該會對於 使用HttpClient進行JWT身分驗證與呼叫需要授權的API和重新更新Token權杖的程式設計範例 這篇文章更感興趣。
最後,讓我們來使用最後一種方式,這種編碼方式也是現在滿多人使用的技術,那就是將資料使用 ...
C#的await與wait的差異在哪裡
C#的await與wait的差異在哪裡當在C#進行非同步(Asynchronous)工作程式設計的時候,通常會看到有兩種選擇來等候非同步工作的完成,第一種就是使用Task類別所提供的Wait()方法,另外一種就是使用C#5.0之後所提供的...
C#:練習如何設計多載Overloading與覆寫Overriding
相信很多人對於C#的多載Overloading與覆寫Overriding都無法了解到其中的差異,我們在這裡做個簡單的說明了解更多關於[成員多載] 的使用方式了解更多關於[override(C#參考)] 的使用方式了解更多...
在.NETMAUI專案你使用字型圖示來美化App
在.NETMAUI專案你使用字型圖示來美化App若想要讓你的App更加光彩奪目,吸引他人的目光,那就多加些色彩與圖形在App內,然而,想要加入圖片與豐富的色彩,這個部分絕對是大部分程式設計師的罩門,也就是他們最不擅長的地方,不過,卻是可以在.NETMAUI...
MicrosoftMVP
XamarinMVP
網誌存檔
►
2022
(39)
►
九月
(3)
►
八月
(18)
►
七月
(16)
►
五月
(2)
►
2021
(65)
►
十二月
(5)
►
九月
(1)
►
七月
(18)
►
六月
(16)
►
五月
(4)
►
四月
(8)
►
三月
(5)
►
二月
(1)
►
一月
(7)
►
2020
(43)
►
十一月
(2)
►
十月
(16)
►
九月
(7)
►
五月
(2)
►
四月
(12)
►
二月
(2)
►
一月
(2)
►
2019
(70)
►
十二月
(18)
►
十一月
(6)
►
十月
(2)
►
九月
(6)
►
八月
(3)
►
七月
(7)
►
六月
(8)
►
五月
(7)
►
四月
(3)
►
三月
(1)
►
二月
(7)
►
一月
(2)
►
2018
(45)
►
十二月
(2)
►
十一月
(4)
►
九月
(9)
►
八月
(11)
►
七月
(11)
►
五月
(1)
►
四月
(6)
►
二月
(1)
▼
2017
(65)
►
十一月
(2)
►
十月
(27)
▼
九月
(34)
C#:網路下載檔案之下載進度事件event方法
C#:網路下載檔案之下載進度委派delegate方法
C#:使用Async和Await讀取多網站資料
C#:使用多個工作task讀取多網站資料
C#:泛型Generic類別的物件序列化
C#:使用多執行緒Thread讀取多網站資料
C#:using陳述式使用練習
C#:以明確方式實作介面(ExplicitInterfaceImplementation)練習
C#:購物車多樣付款機制(使用介面Interface來抽象化需求)
.NETFramework/PCL可攜式類別庫/.NETStandard標準類別庫...
C#:is(C#7.0類型模式)與as的使用練習
C#:練習如何設計多載Overloading與覆寫Overriding
VisualStudio:除錯模式,會使用預設的帳號與密碼
C#:使用ICloneable介面,複製一個物件
了解.NET標準類別庫(.NETStandard)的TypeForwarding運作...
C#:撰寫複製建構函式Constructorctor
剖析.NETFramework/.NETCore/Xamarin/.NETSta...
C#:處置模式Dispose設計模式
C#:繼承類型InheritanceType的成員實值相等
C#:類型成員ClassMember的實值相等ValueEquality
C#/CLR:關於集合Collection內的成員Member的記憶體回收Mem...
C#:結構成員相等MemberEqual的測試
C#:物件相等ObjectEqual的測試
.NETC#常數const與唯讀readonly
.NETC#物件延遲產生LazyInitialization的做法
.NETC#堆疊Stack與堆積Heap的記憶體耗盡測試
.NETC#靜態建構函式staticconstructor與執行個體建構函式Instan...
.NETC#類別class的繼承Inheritance與方法的覆寫override和...
.NETC#結構struct的宣告與封裝和使用練習
.NETC#類別class的宣告與封裝和使用練習
.NETC#物件參考與弱式參考的比較
.NET如何在C#,使用單例模式(SingletonPattern),設計這樣模式的類別
.NETC#使用類別建構式與解構式,來觀察GC記憶體回收運作機制
.NETC#類別繼承ClassInheritance中的建構函式Constructor...
►
八月
(2)
精選文章
在WPF上建立與使用Lottie來設計出具有動畫效果
在WPF上建立與使用Lottie來設計出具有動畫效果之前有寫過一篇 建立與使用Lottie來設計出具有動畫效果的App 文章,說明如何在.NETMAUI專案中,使用Lottie檔案,產生出具有動畫效果的應用程式,這兩天聽到有個WPF上有這樣類似的...
文章分類
C#
(105)
Xamarin.Forms
(14)
VisualStudio
(11)
ASP.NET
(2)
搜尋此網誌
檢舉濫用情形
延伸文章資訊
- 1C# Class, Object (static, public, protected, private)介紹- 教學 ...
在這裡,會介紹C#的Class 及Object基本用法. Class基本架構. 物件導向開發時,會運用class來作為資料型別. 這時,class就好像一個大類別,在這裡面, ...
- 2C# 認識物件 - HackMD
this 最經典的用法便是用在建構式,this 關鍵字用來強調當前執行的主角,在建構式中以區分跟主角相同名稱的變數傳遞值。 public class Employee { private str...
- 3類別
類別是使用 class 關鍵字來宣告,後面接著唯一識別碼,如下列範例所示:. C# ... 語言規格是C# 語法及用法的限定來源。
- 4C# 类(Class) - 菜鸟教程
C# 类(Class) 当你定义一个类时,你定义了一个数据类型的蓝图。 ... 类的定义是以关键字class 开始,后跟类的名称。 ... 下面的实例演示了静态变量的用法: ...
- 5C# 學習筆記-物件導向學習 - Medium
4. 上一課建立的Student Class 則是一種Reference Type。宣告Reference Type 的變數時,也會先在記憶體中尋找一個空間,標記為變數名稱,然後裡面則「存放 ...