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 類型的區別
- 一個是預定義,一個是自定義
-
一個是單純一點,一個是復雜點,有自己定義的方法和屬性和字段和函數。當然,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
結構體
類是引用的
