深入浅出C# 中文版 图文皆译 第三章 page97

来源:互联网 发布:java报表怎么做 编辑:程序博客网 时间:2024/06/05 21:57

 

 

你不用创建Talker类的实例就可以调用方法。只需要这样:

 

 

Static方法就是这么调用的,你已经这么做过了。如果你把BlahBlahBlah()方法的static关键字去掉,那你就一定要创建一个Talker的实例来调用这个方法。除了这个区别,静态方法和实例方法一样。你可以给它传递参数,它会返回值,并且它处在类里面。

你还可以用static关键字做一件另外的事儿。你可以把整个类声明为static,那么它的所有方法一定要是静态的。如果给一个静态类添加一个非静态方法,会无法编译的。

 

 

问:我想到静态就想到了不会改变的东西。这意味着非静态方法可以改变而静态方法不能改变吗?它们的行为方法有区别?

答:不,静态的和非静态的方法行为方式是一样的。唯一区别是静态方法不要求一个实例,而非静态方法要有实例才行。很多人记不住这一点,因为“静态”这个词汇不是很直观。

问:如果我不创建我的类的一个实例我就不能用它?

答:可以用它的静态方法。但是非静态方法就需要创建实例了。

问:那我干嘛要写需要实例的方法呢?我为什么不把所有的方法都写成静态的?

答:因为如果你的对象需要保持一些数据--比如Mike的每个Navigator对象都需要保持一个路径的数据--这样你才可以用每一个对象来操作不同的数据。所以当Mike调用Navigator2对象的ModifyRouteToAvoid()方法的时候,只会影响保存在这一个实例里面的路径数据,不会影响到Navigator2和Navigator3对象。这样Mike就可以同时操作三条路径--它的程序就可以同时跟踪它们。

问:实例是怎么保持数据的?

答:翻过页来找答案!

原创粉丝点击