c#静态方法中为什么可以调用非静态的构造函数?比如实例化对象!!

 我来答
飘圣滴说0i
2012-12-27 · 超过34用户采纳过TA的回答
知道答主
回答量:305
采纳率:0%
帮助的人:70.4万
展开全部
C#不熟 但是玩过C++
1.面向对象的预言里面 静态方法无非就是独立于对象的一种方法。这种方法不需要要实例化具体的对象,通过类名即可调用,很多工具类用的就是公开的静态方法。
2.没有非静态的构造函数这么一说,可以说 静态函数和构造函数本身就是互斥的。
3.静态函数不代表不能在函数体内去实例化一个对象,建议看看工厂模式。典型的静态方法中实例化一个具体的类对象。
追问
构造函数不就是类的一个用来实例化对象的特殊方法吗?程序入口是静态的方法,但是构造函数没有用static修饰啊?为什么就可以直接调用?求原理!!再多问一个嘿嘿··为什么结构里可以有构造函数,但是该构造函数为什么就不能是无参的呢?
来自:求助得到的回答
草薙在
2012-12-27 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6316万
展开全部
为什么不可以调用?静态方法不过是一段程序而已,所有的程序的入口都必须是静态的,不然无法运行,静态的程序不能调实例化方法,那跟C还有什么区别。

讲白了方法什么的其实不过就是个带this指针的函数而已
追问
静态的方法或字段在程序一运行时就保存在内存中,那未实力化之前非静态的字段和方法存放在哪里?
追答
所有的方法都是在执行的时候才会由JIT编译器编译成机器码才存到内存里的,静态字段会在类相关的存储堆存储。

未实例化的对象怎么可能有非静态的字段存储呢?和类相关联的实例字段都是在new 初始化以后在内存分配的,实例方法是在执行的时候由JIT编译成机器码放到Meta堆里面
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老鸟是什么
2012-12-27 · TA获得超过117个赞
知道答主
回答量:180
采纳率:0%
帮助的人:70.1万
展开全部
静态方法可以通过类名访问,也可以通过创建对象访问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式