c#静态方法中为什么可以调用非静态的构造函数?比如实例化对象!!
展开全部
C#不熟 但是玩过C++
1.面向对象的预言里面 静态方法无非就是独立于对象的一种方法。这种方法不需要要实例化具体的对象,通过类名即可调用,很多工具类用的就是公开的静态方法。
2.没有非静态的构造函数这么一说,可以说 静态函数和构造函数本身就是互斥的。
3.静态函数不代表不能在函数体内去实例化一个对象,建议看看工厂模式。典型的静态方法中实例化一个具体的类对象。
1.面向对象的预言里面 静态方法无非就是独立于对象的一种方法。这种方法不需要要实例化具体的对象,通过类名即可调用,很多工具类用的就是公开的静态方法。
2.没有非静态的构造函数这么一说,可以说 静态函数和构造函数本身就是互斥的。
3.静态函数不代表不能在函数体内去实例化一个对象,建议看看工厂模式。典型的静态方法中实例化一个具体的类对象。
追问
构造函数不就是类的一个用来实例化对象的特殊方法吗?程序入口是静态的方法,但是构造函数没有用static修饰啊?为什么就可以直接调用?求原理!!再多问一个嘿嘿··为什么结构里可以有构造函数,但是该构造函数为什么就不能是无参的呢?
来自:求助得到的回答
展开全部
为什么不可以调用?静态方法不过是一段程序而已,所有的程序的入口都必须是静态的,不然无法运行,静态的程序不能调实例化方法,那跟C还有什么区别。
讲白了方法什么的其实不过就是个带this指针的函数而已
讲白了方法什么的其实不过就是个带this指针的函数而已
追问
静态的方法或字段在程序一运行时就保存在内存中,那未实力化之前非静态的字段和方法存放在哪里?
追答
所有的方法都是在执行的时候才会由JIT编译器编译成机器码才存到内存里的,静态字段会在类相关的存储堆存储。
未实例化的对象怎么可能有非静态的字段存储呢?和类相关联的实例字段都是在new 初始化以后在内存分配的,实例方法是在执行的时候由JIT编译成机器码放到Meta堆里面
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态方法可以通过类名访问,也可以通过创建对象访问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询