在使用C#做应用程序开发过程中,一个项目往往涉及公有变量的定义和使用,多了解和掌握这些基础知识对开发是有益处的。
对于项目中的公有变量,通常情况下有哪几种定义和使用方式?
一、在程序中定义和使用
比如,我们在Program类中定义:
public static string Str = "公有变量";
那么在其他地方可以通过下面方式使用(Program是静态类,不需要实例化):
MessageBox.Show(Program.Str, "");
刚开始接触C#的程序员比较习惯这样的方式。
二、定义公有类进行封装
比如,我们可以在项目中定义一个公有类:
class GlobalVar{private static string _DBStr="连接属性"; // 私有静态字段public static string GetDBConn // 公有静态属性{get { return _DBStr; }set { _DBStr = value; }}}
在其他地方可以直接使用:
MessageBox.Show(DBConn.StrConn, "访问公用变量");
这样的方式在程序开发中更为常见。这种方式比较灵活,通过定义类的字段和访问属性对公有对象进行定义和使用,可以对访问根据需要加以限制。
三、使用文本文件进行存储
以前喜欢使用,现在很少使用了,见《C#读取文本配置文件》。
四、通过JSON文件进行存储
通过NuGet包管理器安装Newtonsoft.Json。
新建一个jsconfig1.json的文件,内容如下:
{"DBConn": "连接属性","NetWorkConfig": {"IPAddress": "IP地址","SubMask": "子网掩码","Gateway": "网关地址"}
}
定义访问类:
public class Config{public string DBConn { get; set; }public JObject NetWorkConfig { get; set; }}
添加引用:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
通过程序来访问:
//读取JSON文件string json = System.IO.File.ReadAllText("D:/CSharp/jsconfig1.json");//反序列化JSON到Config对象Config config = JsonConvert.DeserializeObject<Config>(json);//读取变量string StrDBConn = config.DBConn;string StrIPAddress = config.NetWorkConfig["IPAddress"].ToString();string StrSubMask = config.NetWorkConfig["SubMask"].ToString();string StrGateway = config.NetWorkConfig["Gateway"].ToString();//输出公有变量的值textBox1.Text += StrDBConn + Environment.NewLine;textBox1.Text += StrIPAddress + Environment.NewLine;textBox1.Text += StrSubMask + Environment.NewLine;textBox1.Text += StrGateway + Environment.NewLine;
现在这样的方式比较流行了。
五、通过XML文件进行存储
新建XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<Config><DBConn>连接配置</DBConn><NetWorkConfig><IPAddress>IP地址</IPAddress><SubMask>子网掩码</SubMask><Gateway>网关地址</Gateway></NetWorkConfig>
</Config>
新建访问类:
public class XmlConfig{public string DBConn { get; set; }public XmlNode NetWorkConfig { get; set; }}
引用:
using System.Xml;
通过代码进行访问:
//创建XmlDocument对象XmlDocument xmlDoc = new XmlDocument();//加载XML文件xmlDoc.Load("D:/XMLFile1.xml");//创建 Config 对象XmlConfig config = new XmlConfig();//获取DBConn节点的值config.DBConn = xmlDoc.SelectSingleNode("/Config/DBConn").InnerText;//获取NetWorkConfig节点config.NetWorkConfig = xmlDoc.SelectSingleNode("/Config/NetWorkConfig");//访问和使用公有变量string StrDBConn = config.DBConn;string StrIPAddress = config.NetWorkConfig.SelectSingleNode("IPAddress").InnerText;string StrSubMask = config.NetWorkConfig.SelectSingleNode("SubMask").InnerText;string StrGateway = config.NetWorkConfig.SelectSingleNode("Gateway").InnerText;// 输出公有变量的值textBox1.Text += StrDBConn + Environment.NewLine;textBox1.Text += StrIPAddress + Environment.NewLine;textBox1.Text += StrSubMask + Environment.NewLine;textBox1.Text += StrGateway + Environment.NewLine;
当然还有其他的方式,比如通过本地数据库或者一般性的加密文本、或者二进制的文件等等,可以根据项目的需要进行选择。