当前位置: 爱符号 - 所有分类 - 资源共享 - 文档 - C# - 一个类代码很多,一个很少,实例化这两个类的时候,代码多的是不是时间跟内存相对来说花得比较多
一个类代码很多,一个很少,实例化这两个类的时候,代码多的是不是时间跟内存相对来说花得比较多 YiGeLeiDaiMaHenDuo,YiGeHenShao,ShiLiHuaZheLiangGeLeiDeShiHou,DaiMaDuoDeShiBuShiShiJianGenNeiCunXiangDuiLaiShuoHuaDeBiJiaoDuo
小伟 发表于:2013-07-30 17:01:47 阅读(9512)
关键词:C# C# .Net .Net 代码优化 代码优化 代码细节 代码细节 类实例化细节 类实例化细节
摘要:一个类代码很多,一个很少,实例化这两个类的时候,代码多的是不是时间跟内存相对来说花得比较多?

以下内容符号空间解答:


首先你只需要知道:

1.静态的成员要占地方 是固定的,只占一次

2.实例成员包括method field event property 都要占地方的,占得不多,主要是字段


代码多如果成员少,就不一样,因为代码再多不执行,但是产生的IL代码过大,还是会有所影响,尽可能的封装好,但是不要滥用,所以LINQ慢的原因,还有一个就是它生成的类,方法过大,继承体系复杂。


有的人不知不觉的去封装一些东西,刚开始的时候觉得还不错,效果很好,速度也快,但是后面功能多了后,发现慢了。很大一部分原因,是代码写得不好,有的不必要的放进去了。


还要注意一个封装的时候大忌,不要过多的去包装属性,例如:

public class XXX
    {
        public int Age { get; set; }
    }
    public class BBB
    {
        private XXX _xxx;
        public XXX XXX { get { return _xxx; } }
        public int Age { get { return _xxx.Age; } }
    }
这样显得不必要,因为可以直接访问。


还有一个代码上的事情,就如刚才那段代码:

BBB b= new BBB();
//b.XXX.Age=3; 这是别的地方赋的值 
if(b.XXX.Age==0){
   //to do
}else if(b.XXX.Age==1){
   //to do
}else{
   //to do
}
多次调用对象的成员,会显得麻烦,因为实际的 b.XXX.Age 是 这样的   b.getXXX().getAge();
建议做法是用一个局部变量  int Age = b.XXX.Age;
原因:每次去访问属性,都会产生方法执行,会分配函数堆栈空间,而一次定义一个变量,只是占用了一个int空间



声明:以上内容仅代表作者观点,不代表爱符号赞成此内容或立场