> 信息中心 >

静态方法中实例化的对象问题

来源:互联网 编辑:刘梓楠

有网友碰到过这样的问题:静态方法中实例化的对象问题,问题详细内容为:

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
User user =null;
user.ToHelloWorld ();
if (user == null)
{
Console.Write("world");
Console.Read();
}
else
{
Console.Write(user.UserName);
Console.Read();
}

} catch { Console.Write("hello world"); Console.Read(); } } } public class User { public string UserId { get; set; } public string UserName { get; set; } } public static class UserExtention { public static void ToHelloWorld(this User user) { if (user == null) { user = new User() { UserName = "hello" }; } } }

}

这段代码的输出结果为WORLD。调试发现在执行完 user.ToHelloWorld ();后User还是为NULL。请问大神们这是为什么?

C# ,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下:

解决方案1:
User user =null; 和 静态类下的扩展 是2个不同的对象 收获园豆:5
解决方案2:
User user =null;
user.ToHelloWorld (); 一个为null的user对象。对于null对象,你是无法操作其属性的。 初始化对象的时候不建议初始化为null。 User user =null; 改为  User user = new User { UserId="XXX",UserName="XXX"};

为什么静态方法不用被实例化

答:静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,他是属于类的也就是没个实例对象都是对于以个静态变量,静态...

静态方法和实例化方法的区别

答:静态方法的调用,是类名后直接加静态方法即可。实例方法必须将类实例化后,用实例调用该实例方法。 静态方法,只能调用类中的其他静态属性和静态方法,不能调用类中的非静态属性和非静态方法。 实例方法,可以调用静态属性和静态方法,也可以调...

JAVA静态函数实例化问题。

答:问题1:只有第一次的时候会调用实例化,因为你有if (instance == null) 的判断,而instance又是一个静态变量。或者其他地方有释放的时候,再运行过这个函数也会再实例化一次。 问题2:用static声明的方法是静态方法,在调用该方法时,不会将对象...

java 为什么不能在类中实例化对象,而一定要在方法...

答:把变量设为静态 因为main方法是静态的,而你的实例化对象不是静态的,没法直接引用。

Java中可以直接调用类中静态方法,为什么不用实例...

答:好吧,我来试试看,看答案能不能够让你满意。 先通俗的分析下,我们把类看作是一个房子。房子里面有家具,桌椅板凳之类的,房子里面还有人。 房子里面所有的人都应该是共有一套家具的。也就是说,这些家具是唯一的,如果某个家具坏了,那么大家...

PHP手册说静态属性不能通过一个类已实例化的对象来...

答:我想手册上说的是用这种方式来访问: print $foo->$my_static 他这里说的静态方法访问是指:: 翻译有歧义的时候你可以看看英文版。

为什么不能在静态方法中调用实例对象

答:实例对象 是在new 出来后 才存在的。 静态 是一开始最先加载的。 加载 静态时。实例对象在内存中还不存在。 所以不行。

java中静态方法为什么不用实例化

答:静态方法,静态类都是直接就在程序运行的时候就加载了。实例化是我们在需要使用某个方法的时候才去实例化类,再调用方法

main方法是静态方法,为什么能直接实例化对象

答:静态方法是类具有的,调用的时候不需要new对象,只需要“类名.方法名”就可以了。静态方法一个类只保留一份。静态方法在内存里存放在栈中。 普通方法,在new对象的时候才被分配内存,存放在堆中。 栈和堆是内存的两个区域。 举例: 类A有静态方法m...

类中静态方法和实例方法的区别

答:1、调用方式上静态方法依赖于类,通过类.静态方法调用;实例方法依赖于类的对象,需要创建对象后,对象.实例方法使用 2、使用上实例方法内部不能定义静态变量,会出现编译错误;实例方法可以直接调用静态方法;静态方法内部可以定义和使用实例变...


请注意,本站信息均收集自互联网,相关信息仅供参考,医疗等重要信息请以正规途径为最终意见,本站不承担任何责任!

www.wosoni.com false 互联网 http://www.wosoni.com/blogcnk/mm/ccdeik.html report 2595 解决方案1:User user =null; 和 静态类下的扩展 是2个不同的对象收获园豆:5解决方案2:User user =null; user.ToHelloWorld ();一个为null的user对象。对于null对象,你是无法操作其属性的。初始化对象的时候不建议初始化为null。User user =null; 改为  User user = new User { UserId="XXX",UserName="XXX"};

热门图片