日期:2014-05-18 浏览次数:21094 次
class A
{
public string s1 = "123";
public static string s2 = "456";
public void doSome()
{ }
public static void doMore()
{ }
}
------解决方案--------------------
对象和实例的理解一直是我困扰的问题,网上的说明和教科书上的说明都很抽象,我不能完全理理解他们区别。
1。对象是类的一个实例,的确没错,但是什么时候需要实例,什么时候却不需要,我无法确认。
比如有些类中封装的方法必须需要靠new个实例才能去使用类中的方法,否则即使能用类访问到静态方法我使用了也会报错?
疑惑是类既然能访问其中的静态方法,为什么不能拿来用,而必须要new个实例,那么这个静态方法又有什么用呢?
不用实例化的:
静态方法是为类提供的公共方法,也就是这个方法对所有属于这个类的对象适用。
例如,假设为男人定义一个类,该类有个方法用来查询男人是否有小鸡鸡,那么从现阶段的生物进化来看,男人都是有小鸡鸡的。
也就是不必具体到某个男人,就知道他有小鸡鸡。所以这个方法应定义为静态方法,因为是对所有男人适用的。
要实例化的:
每个人都有身高体重,当你要查询人的体重时,你肯定先要指定是那个人的体重。这个过程就是相当于实例化,具体到了个人。
你不实例化,也就是不指定是那个人。那么你要查谁的体重?
===============
2。有些类却无需创建实例,直接定义就可以使用,也不报错。我如何知道这个类必须实例能用还是不需要实例就可以用?
以上的这些问题,是不是跟是否有指针的指向有关呢?
请大虾们能用通俗的话讲解下或者内部的机制如何操作的。
有些类却无需创建实例,直接定义就可以使用。这种类型往往是面向公众的,如政府机构,提供了一系列的服务。这些服务每个人都是适用的. 所以这个可以是静态的。
我如何知道这个类必须实例能用还是不需要实例就可以用? 这个和问题域有关,如前面所说,当你是研究男人有没有小鸡鸡时,这个不用实例化就能查询到。
当你要查询体重时,就要具体到某个人,就是要实例化。
------解决方案--------------------
C#中 如果对象不实例化!会出现 使用对象为引用的现象!
实例化 就像是
定义 List<T> list; //我自己说自己是一个List<T>但是 程序不知道!
实例化 list=new List<T>;//程序知道我是一个List<T>了
这是我对c#中的实例化理解 不知道对你有没有帮助
------解决方案--------------------
所有的东东都是
对象(object)
包括对象的实例(instance)
------解决方案--------------------