c#静态变量和静态属性的区别

编程初段通常比较喜欢使用静态变量,和静态方法,因为很方便,不用仔细构建框架。但是对封装性破坏很大,internal static 或public static 声明的东西几乎程序里什么地方都可以使用,但是我觉得很容易出问题。 前几天碰到一个问题, 程序启动的时候需要检查一下配置目录,当不存在此目录,就去创建一个。

程序如下:

 

    public class ClassDebug
    {
        public static string 静态属性
          {
            get
            {
                string tempPath =
                    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "配置目录");
                if (!Directory.Exists(tempPath))
                {
                    Directory.CreateDirectory(tempPath);
                }
                return tempPath;
            }
        }
    }

 

 

public class HostInfo
    {
        private string _ip = "127.0.0.1";
        private string _port = "80";

        public string Ip
        {
            get { return _ip; }
            set { _ip = value; }
        }

        public string Port
        {
            get { return _port; }
            set { _port = value; }
        }
    }

 

下面程序一运行,就把目录创建出来,没有机会在初始化阶段对目录做任何修改。拿到的是默认的Ip和Port的值。

public static string MyPath= Path.Combine(ClassDebug.ClassDebug.静态属性, host.Ip + "_" + host.Port);
      
        public static void Main(string[] args)
        {
            //其他代码
            Console.ReadLine();
        }
    

下面才是正确的做法,有时候真是不能只图省事,写少几行代码。但是静态变量我总觉得没什么好处。

        public static string MyPath
        {
            get
            {
                //给机会外部修改目录的机会
                    HostInfo host = new HostInfo();
                host.Ip = LoginWindow.Ip;
                host.Ip = LoginWindow.Port;
                return Path.Combine(ClassDebug.ClassDebug.静态属性, host.Ip + "_" + host.Port);
            }
        }
public static void Main(string[] args)
        {
            //其他代码
            Console.ReadLine();
        }
posted @ 2013-05-18 06:43  grkin  阅读(674)  评论(0编辑  收藏  举报