1. 程式人生 > WINDOWS開發 >C#基礎學習C# 8.0 In a Nut Shell

C#基礎學習C# 8.0 In a Nut Shell

技術分享圖片

Field 其實就是變數,但是英文裡面是field,欄位,域名。為啥要這麼取名是因為面向物件程式設計,發明類,事兒多,什麼防止變數被修改什麼的,所以發明了屬性property

屬性就是用函式來操縱變數,也即這個欄位,field。所以獨立用欄位的類,不怎麼好(大概是這個意思)。

然後,類要初始化,初始化變數怎麼辦?取名Constructor,翻譯過來是建構,構造(心理學的構造主義,建構主義心理學 就是這個詞彙),構造一下,等於初始化。

為了要讓初始化明顯,取名和類名是需要一樣的。這裡類名是UnitConverter(單位換算類),那麼建構函式,也叫做UnitConverter。

可見,為了實現類,面向物件的程式設計方法,可是苦了編譯器,編譯器做了很多工作。(還有語言本身的工作)

接下去是叫做方法,這個是又是為了區別函式發明的,本質上和函式一樣,在類裡面,建構函式,等之類,可以叫函式,自定義函式,或者屬性函式(為了操縱變數,也即欄位發明的概念),

統統叫做,方法,method,注意,method 就是 函式 function ,函式就是method ,只是場景不同,所以又發明一個詞彙,混淆視聽。唉。

?

繼續,

UnitConverter feetToInchesConverter = new UnitConverter (12);

例項化一個類,並且初始化的值為12.

注意,這裡的新名詞,例項化。本質上,int x = 30 ,這種是C#或編譯器預先定義的型別,當然後臺肯定實現了的,並不是天然就有的。

Int 就是預設型別,預定義型別。現在UnitConverter 寫在變數名 feetToInchesConverter 前面,類比 int x

Int x = 30 ,這個很簡單,當然內部機制是什麼我們暫且不管。

UnitConverter feetToInchesConverter = new UnitConverter (12) 而這個 需要關鍵字 new ,區分它是不一樣的變數,這裡升級為"類"

所以叫做例項化。等價於我們自己定義一個類,自己弄型別,區分int

當然,初始化的值為12,傳給誰?當然是傳給裡面的建構函式(或者叫做構造方法,反正函式和方法在我這裡筆記上就亂用了

,沒有區分)

?

Console.WriteLine (feetToInchesConverter.Convert (30));

這句話,用點號,呼叫Convert方法(函式),把30傳入進去。

函式(方法)內部是這樣的:

技術分享圖片

其中,那個ratio new類的時候,已經被建構函式,構造好了,所以是12

其次,那個unit是傳入的值 ,為30

所以返回的值是 12*30 = 360

?

執行結果:

技術分享圖片

?

總結:

UnitConverter int 型別的區別

  1. 一個是預定義,一個是自定義
  2. 一個是單純一點,一個是複雜點,有自己定義的方法和屬性和欄位和函式。當然,C#裡面是面向物件的,所以就連int也有方法,或者 函式

    比如int型別有 toString的強制轉換函式

?

類的初始化 或者 例項化的單詞 是initialization,詞彙是 instantiates an object

?

?

?

?

// The instance field Name pertains to an instance of a particular Panda,

// whereas Population pertains to the set of all Pandas:

?

public class Panda

{

????public string Name; // Instance field

????public static int Population; // Static field

?

????public Panda (string n) // Constructor

????{

????????Name = n; // Assign the instance field

????????Population = Population + 1; // Increment the static Population field

????}

}

?

static void Main()

{

????Panda p1 = new Panda ("Pan Dee");

????Panda p2 = new Panda ("Pan Dah");

?

????Console.WriteLine (p1.Name); // Pan Dee

????Console.WriteLine (p2.Name); // Pan Dah

?

????Console.WriteLine (Panda.Population); // 2

}

?

執行結果:

技術分享圖片

又發明了一個詞,叫做static,翻譯過來是靜態的意思。就是執行的時候一直駐留在記憶體裡,反覆呼叫不銷燬(只是我的粗狂理解,並不是真的如此,我知道計算機知識程式設計知識用這種黑盒子或者叫做知識遮蔽,循序漸進是有用的)

所以欄位Population是2

?

?

結構體

?

技術分享圖片

?

技術分享圖片

?

類是引用的

?

技術分享圖片

技術分享圖片

技術分享圖片

?

?

?