MyException - 我的异常网
当前位置:我的异常网» C# » 问个比较有意思的有关问题,关于静态参数

问个比较有意思的有关问题,关于静态参数

www.MyException.Cn  网友分享于:2013-02-01  浏览:6次
问个比较有意思的问题,关于静态参数!
程序里用到一些数组型参数,我以前把它作为静态变量来存储
如:
using System;
using System.Collections.Generic;
using System.Text;

namespace TSOZ.E.Base
{
  public class Top_Config
  {
  public static string[] MMTypes = new string[] { "A", "B", "C", "D" };
  public static string[] YdLxs = new string[] {"X","Y","Z"};
  public static bool[] DWOpt = new bool[] { true,false,false };
  …… 
  }
}

别的类里用Top_Config.MMTypes来调用

可是问题来了,这些数组大概有30多个,而且很多可能就在某个功能里使用,是属于不常用的。但是这些不常用的参数我也不想把他放到某个窗体类里,我统一把参数放在Top_Config里比较清晰,维护和本地化时也比较方便。

那样这样的话,是不是性能受影响了?毕竟这些参数很多就一个功能窗口用到。

我现在想改一下,把常用的参数作为静态变量,不常用的用实力化的属性来做

如:
 public class Top_Config
  {
  public static string[] MMTypes = new string[] { "A", "B", "C", "D" };
  public static string[] YdLxs = new string[] {"X","Y","Z"};
   
  public bool[] DWOpt
  { 
  get {return new bool[] { true,false,false };}
  } 
  …… 
  }

大家看看,讨论一下,应该怎样改最好。

------解决方案--------------------
静态变量。我认为静态变量会在编译时存放在程序体内,运行时会加载到内存中。
即使是成员变量也无可避免地会编译到程序体中,也一样会加载到内存里,还损失一个实例化对象的内存。
------解决方案--------------------
没看明白,不过看在100分的份上就说一下吧.
静态变量和实例化其实就是面向对象而已.

比如有一类动物叫人,每个人都有手和脚.这个人就是Top_Config ,手和脚就是MMTypes和YdLxs
其中,人类中有个人叫张三,张三有个手提包. 那你new Top_Config(),特定一个属性标识为张三.DWOpt就是那个手提包了.

说到底,不管你采用静态还是非静态的变量(属性)来存储数据.从性能角度来考虑的话,应该差别不大.

另外,楼主最后举的那个例子,实在是...
你可以这么写

public class Top_Config 

public static string[] MMTypes = new string[] { "A ", "B ", "C ", "D " }; 
public static string[] YdLxs = new string[] { "X ", "Y ", "Z "};
public bool[] dwopt ;

public bool[] DWOpt 
{
get {return this.dwopt;} 
set {this.dwopt=value;} 
}
……


------解决方案--------------------
怎么会浪费性能?
提高还有可能。
------解决方案--------------------
楼主,可先看看你的这30个数组,所占用的空间大不大(可根据"类型+值+数据"计算出来),如果占用的不是很多,如在1M以内,你就全定义成静态的就好,不用那么在晚那一点点内存资源(我们新建一个DataSet对象,也许吃掉的内存比你这一堆数组还多).

如果有很多数组不常用,是可以定义成属性,但应该是静态属性,无所实例化,如:
 public static bool[] DWOpt 
{
get {return new bool[] { true,false,false };} 
}
调用的时候这样:Top_Config.DWOpt....
虽然属情是静态,但值是动态,所以初始化类时,只保存属性的地址,应该可节省空间.


从维护的角度来讲,其实放在外部更合理,如放在应用程序的config文件或xml或直接存到数据库里,这样维护起来方便些.例如:哪一天,客户想把"库存报表",改成"我的库存统计报表",直接修改外部文件即可.当然,我只是举例,不一定合乎楼主的需求.
 

------解决方案--------------------
其实资源文件更适合楼主
------解决方案--------------------
静态变量占用内存多少可以估计出来么,如果与可用内存的比例很高导致系统需要频繁的在页面文件
和可用内存之间来回切换才算影响性能,否则就是提高性能,因为实例每次都要初始化也是占用cpu
时间的。
------解决方案--------------------
public class Top_Config 

public static string[] GETMMTypes()

文章评论

总结2014中国互联网十大段子
总结2014中国互联网十大段子
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员必看的十大电影
程序员必看的十大电影
漫画:程序员的工作
漫画:程序员的工作
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些争议最大的编程观点
那些争议最大的编程观点
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
一个程序员的时间管理
一个程序员的时间管理
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
Java程序员必看电影
Java程序员必看电影
我是如何打败拖延症的
我是如何打败拖延症的
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
鲜为人知的编程真相
鲜为人知的编程真相
如何成为一名黑客
如何成为一名黑客
中美印日四国程序员比较
中美印日四国程序员比较
我的丈夫是个程序员
我的丈夫是个程序员
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
10个调试和排错的小建议
10个调试和排错的小建议
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
旅行,写作,编程
旅行,写作,编程
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
每天工作4小时的程序员
每天工作4小时的程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员的鄙视链
程序员的鄙视链
代码女神横空出世
代码女神横空出世
程序员都该阅读的书
程序员都该阅读的书
程序员和编码员之间的区别
程序员和编码员之间的区别
为什么程序员都是夜猫子
为什么程序员都是夜猫子
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有