社区
C#
帖子详情
下班前弱问下,关于类里静态字段的问题。
Novisland
2014-02-21 04:54:27
类里的静态字段是所有类的对象共享的,只有一个拷贝。
那是不是只要程序一跑起来,就给静态字段在内存里开了空间?
哪怕这个类从头到尾一个对象实例都没建立过?
...全文
290
9
打赏
收藏
下班前弱问下,关于类里静态字段的问题。
类里的静态字段是所有类的对象共享的,只有一个拷贝。 那是不是只要程序一跑起来,就给静态字段在内存里开了空间? 哪怕这个类从头到尾一个对象实例都没建立过?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Novisland
2014-02-28
打赏
举报
回复
明白了,谢谢。
以专业开发人员为伍
2014-02-22
打赏
举报
回复
以后创建这类型对象 --> 以后创建这类型对象实例 自然语言一旦涉及到过于底层的“技术”可能有会显得点混淆。好在我们并不关心这些混淆。
以专业开发人员为伍
2014-02-22
打赏
举报
回复
当你第一次使用某个类型的对象,.net平台会首先初始化这个类型对象,然后才用这个类型对象来创建对象的实例。以后创建这类型对象,则直接使用类型对象创建对象的实例。 第一次初始化类型对象时(而不是将dll模块加载到内存时)才会初始化静态变量值。实际上,这个初始化动作是与你的
static 类型名(){}
方法一同执行的。
月影
2014-02-22
打赏
举报
回复
大体上可以这么理解:当运行时调用到一个托管方法的时候,jit编译器会编译里面用到的所有类型。编译类型的时候会创建runtimetype对象,runtimetype对象对应于我们声明的每一个类,当然也包括.net framework中的类。例如我们使用typeof(MyClass)返回的Type对象,其实就是一个runtimetype对象,因为runtimetype的基类就是Type。该runtimetype对象存在于Appdomain的loader堆中,runtimetype对象的内存中应该包含了该类型中静态变量的引用(引用类型),或者直接包含静态值类型变量。 所以说,对于同一个类形,每个appdomain都会有静态变量的副本,相互不会影响。 对于开放泛型类型来说,情况有不一样,假如说List<T>类型内部有一个静态变量,那么List<int> ,List<string>等等这些关闭的类型中都会有List<T>中所声明的静态变量的副本。他们之间保持独立。所以在泛型类型定义中定义静态变量来使所有关闭的泛型类型共享同一个对象是错误的。 当在静态变量上应用了ThreadStatic特性而且又同时存在多一个Appdomain的时候,事情又更复杂了。 另外,对于mscorlib中定义的类型,在不同的appdomain中是共享的。这么做是为了提高性能。比如说typeof(int),在不同的appdomain中创建不同的int类型的runtimetype对象除了浪费内存没什么好处。所以typeof(int)返回的类型对象存在于共享appdoman中。 以上只是我的理解,不保证正确性。
linuxca
2014-02-22
打赏
举报
回复
低调是种无声的高调
2014-02-21
打赏
举报
回复
学习了,想想还真是,没有实例化的,并不会直接占用空间
欢乐的小猪
2014-02-21
打赏
举报
回复
没实例过这个类的对象,没有StaticClass.StaticVarible使用过,就没开辟过空间。 若实例化包含静态变量的类,则静态变量是在类构造函数之前先赋值的。。
feiyun0112
2014-02-21
打赏
举报
回复
如果类中存在静态构造函数(第 10.11 节),则静态字段初始值设定项的执行在该静态构造函数即将执行前发生。否则,静态字段初始值设定项在第一次使用该类的静态字段之前先被执行,但实际执行时间依赖于具体的实现
http://msdn.microsoft.com/zh-cn/library/aa645758%28v=vs.71%29.aspx
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
cheng2005
2014-02-21
打赏
举报
回复
第一次用到这个类的时候会初始化静态字段,调用静态构造方法。 如果整个运行期间一直没用到的话那就不会初始化
tipedia:非官方TiDB百科,目标收录所有TiDB开发维护使用过程中可能会碰到的概念配置项其他等等
Tipedia 这是什么 这是一个非官方的TiDB相关概念的百科,目标收录所有TiDB开发/维护/使用过程中可能会碰到的概念/配置项/其他等等。 为什么会有这个东西 ...这些
问题
的人中许多都是经验丰富的优秀工程师,就
python中0x是什么意思_弱
问下
,以0x开头的数值表示什么意思?
展开全部16进制,不论多少进制,e5a48de588b63231313335323631343130323136353331333431363564每一位数值对应一个权,如0x54,个位数4的权为16的零次方,十位上的数5的权为16的1次方,故Ox54=5*16的1次方+4*16的零次方...
php 不恒等,Re: 弱问:Latex里不恒等号(三横一撇) - 精华区 - 数学科学学院(SMS)版 - 北大未名BBS...
DSEC@SMS|冯·诺伊曼),信区:SMS标题:Re:弱问:Latex里不恒等号(三横一撇)怎么打?发信站:北大未名站(2007年05月28日15:10:34星期一),转信\usepackage{txfonts}\nequiv或\usepackage{amssymb}\not\equivmondist (猫を...
python如何停止子线程_弱问python的
问题
.怎么终止一个子线程
展开全部等待串口数据导致线程自己sleep而没有机会执行,主线程的join没法继续,方法就是这样32313133353236313431303231363533e4b893e5b19e31333361323564的,换成这个能执行from threading import *import time...
matlab 中插入附录,弱问一个在Latex论文模版附录插入Matlab代码的
问题
- 数学工具(MathTools)版 - 北大未名BBS...
用裸ctexbook文档类编译试试?那样还有
问题
的话,就可以直接找@cauchy了。\documentclass[UTF8]{ctexbook} % 或 GBK,取决于 build_tree.m 的字符编码。\usepackage{fancyvrb}\begin{document}\VerbatimInput[...]{....
C#
110,536
社区成员
642,578
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章