zoukankan      html  css  js  c++  java
  • 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();
            }
  • 相关阅读:
    MyBatis映射文件中用#和$传递参数的特点
    使用谷歌浏览器进行Web开发技巧
    YYYY-mm-dd HH:MM:SS 备忘录
    java通过UUID生成16位唯一订单号
    idea如何设置类头注释和方法注释
    如何用符号构建人的思维系统?
    临界点思维模型
    复利思维模型-拥抱人生的指数增长
    提升自我认知的有效方式
    如何去培养顶尖的思维模型?
  • 原文地址:https://www.cnblogs.com/grkin/p/3084897.html
Copyright © 2011-2022 走看看