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 类型的区别
- 一个是预定义,一个是自定义
- 一个是单纯一点,一个是复杂点,有自己定义的方法和属性和字段和函数。当然,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
结构体
类是引用的