c# 对象为null的时候,调用对象(实例)的方法
当一个对象没有实例化的时候
form1 f1;
调用f1这个实例的其他方法,我认为没有什么意义。
但是为什么调用f1.Equals方法也会错误?
我认为就算f1为null,也可以比较的。
---------------------------------------------
why?
[解决办法]
只要是实例方法就没法调用,与有没有意义无关……
你可以用object.Equals方法哈。
[解决办法]
f1.Equals 具体代码贴了
[解决办法]
你的意思实际上是对类的静态方法的意义.
比如你可以使用使用如下的Form的静态比较方法:
bool Form.Equals(object obja, object objB)
[解决办法]
只要Equals方法不是静态方法,你不实体化对象就是不行的。
[解决办法]
当f1为null时, 内存中不存在Equals方法的地址
只有f1真正实例化后,内存才会Equals方法的地址,这时候调用才不会出错
[解决办法]
只要没有实例化,这个对象就是不存在的,加了点的属性方法都是非法的...
[解决办法]
null 不是对象.
对象只有指向一个实际的对象存贮地址才变得有意义,
如果对象=null,那么只能说明对象的实体不存在.
对于一个不存在的对象,那当然是无法调用它的实例方法的.
[解决办法]
楼上的已经说了
null只是分配对象引用的内存
并没有为对象分配内存,也就是说不能访问其属性和方法,否则会异常
[解决办法]
如果你要调用一个对象的成员函数,那么你需要实例化它。
否则,将它定义为静态函数,通过类名来调用。
如果你只是想比较的话,你可以用object.Equals来
或
form1 f1;
...
if(f1 == null)
{
...
}
else
{
...
}
[解决办法]
form1 f1只是定义了一个form1类型,并没有给f1分配实际的内存空间。所以没有内存空间的f1不能进行比较。
如 form1 f1 = null;一般用在程序中尚不知道是否需要使用它。所以只定义它,待需要使用它的时候再给它分配内存空间。我想这样做是为了提高代码性能~