深入浅出C# 中文版 图文皆译 第四章 类型和引用 page154

来源:互联网 发布:徕卡 m3 知乎 编辑:程序博客网 时间:2024/05/10 16:22

问:我还是不确定我让引用怎么工作的。

答:引用是你使用一个对象中方法和字段的方式。如果你创建一个Dog对象的引用,你可以用引用来访问你给Dog对象创建的任何方法。如果你有一个(非静态的)方法叫做Dog.Bark()或者Dog.Beg(),你可以创建一个叫做spot的引用。然后你就可以用spot来访问Dog.Bark()或者Dog.Beg()方法。你也可以用这个引用改变字段内的信息。所以你可以通过用spot.Breed来改变Breed字段。

问:等一下,这是不是意味着每次我通过一个引用改变一个值,也就改变了所有指向这个对象的引用?

答:对。如果rover和spot指向同一个对象,把rover.Breed改变为“beagle”将会使得spot.Breed也是“beagle”。

问:我们回到关于值类型的东西。为什么我不能把一个大类型的小数值转化为小类型,如果它足够小的话?

答:ok。变量就是不管你的数字有多大都会分配一个尺寸给它。所以如果你有一个long类型的变量,即使它的值很小(比如说5),C#也会给它分配足够多的内存。想想看,这是很有用的。毕竟,变量是因为总是变化才叫做变量的。

C#假设你知道你在做什么并且你不会给一个变量一个你不需要的类型。所以即使数字不够大,但是经过一些数学上的改变,它将会改变它的值,C#就给了对应变量足够它的类型的内存。

问:再给我说一下--“this.”干什么?

答:this是只在对象内部使用的特殊变量。在一个类内部,你用this来访问这个实例的任何方法和字段。当一个类的方法调用其他的类的时候this关键字特别有用。一个对象可以用this来把自己的引用传进另一个对象。所以如果spot调用rover的一个方法并把this作为参数传进去,这就是spot把自己传进了rover里面。

 

 

*不同的数字有不同的尺寸的值类型。最大的数字可以用long类型,最小的可以用byte。

*创建变量的时候你总是给它一个类型,有时候还会同时赋值。

*每个值类型都有大小,你不可以把一个大的类型的值放进小的变量,无论数据的实际大小是多少。

*使用字面值的时候,用F后缀代表float(15.6F),用M代表decimal(36.12M)。

*编译器不会允许你把一个变量赋值为不同类型的值,除非你给它显示转换了。

*有一些词语是语言预置的,你不能给变量赋值为这些词语。比如说for,while,using,new,等等在语言中有特殊作用的词语。

*引用就像标签一样,你可以给一个对象任意个数的引用,它们都指向同一个对象。

*没有引用的对象将会被垃圾收集掉。

原创粉丝点击