C#中对公有变量的定义与使用

  在使用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;

  当然还有其他的方式,比如通过本地数据库或者一般性的加密文本、或者二进制的文件等等,可以根据项目的需要进行选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

速度优化:重新认识速度优化

作者&#xff1a;helson赵子健 应用的速度优化是我们使用最频繁&#xff0c;也是应用最重要的优化之一&#xff0c;它包括启动速度优化&#xff0c;页面打开速度优化&#xff0c;功能或业务执行速度优化等等&#xff0c;能够直接提升应用的用户体验。因此&#xff0c;只要是 An…

uniapp 中 的progress加载进度条 的使用,在 页面显示数据加载的进度条,使用户的使用体验效果更好

学习目标&#xff1a; 学习目标如下&#xff1a; 例如&#xff1a; uniapp 中 的progress加载进度条 的使用&#xff0c;在 页面显示数据加载的进度条&#xff0c;使用户的使用体验效果更好 学习内容&#xff1a; 学习内容如下所示&#xff1a; 相关属性的说明 进度条的显…

[ELK安装篇]:基于Docker虚拟容器化(主要LogStash)

文章目录 一&#xff1a;前置准备-(参考之前博客)&#xff1a;1.1&#xff1a;准备Elasticsearch和Kibana环境&#xff1a;1.1.1&#xff1a;地址&#xff1a;https://blog.csdn.net/Abraxs/article/details/128517777 二&#xff1a;Docker安装LogStash(数据收集引擎&#xff…

【C#】医学实验室云LIS检验信息系统源码 采用B/S架构

基于B/S架构的医学实验室云LIS检验信息系统&#xff0c;整个系统的运行基于WEB层面&#xff0c;只需要在对应的工作台安装一个浏览器软件有外网即可访问&#xff0c;技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQLserver Redis等。 一、系统概况 本系统是将各种生化、免疫、…

CBSCRIPT(CB)脚本执行示例

为自己的软件增加脚本编写功能并自定义API CBScript 自定义脚本语言简介 实现自定义关键字 1、执行While循环语句 string str "//定义变量 var a0 //设置标签 WHILE a<5aa1 ENDWHILE ";DataExcel grid Grid;FunctionBody script ScriptBuilder.BuilderScr…

【MySQL】内置函数

目录 一、日期函数 1、获得年月日 2、获得时分秒 3、获得时间戳 4、在日期的基础上加日期 5、在日期的基础上减去时间 6、计算两个日期之间相差多少天 7、案例 二、字符串函数 1、获取emp表的ename列的字符集 2、要求显示exam_result表中的信息 3、求学生表中学生姓…

【洛谷】P1888 三角函数

三角函数 题目描述 输入一组勾股数 a , b , c &#xff08; a ≠ b ≠ c &#xff09; a,b,c&#xff08;a\neq b\neq c&#xff09; a,b,c&#xff08;abc&#xff09;&#xff0c;用分数格式输出其较小锐角的正弦值。&#xff08;要求约分。&#xff09; 输入格式 一…

【Git】git仓库完整迁移

代码仓库&#xff0c;在公司有两个团队在做&#xff0c;并且gitlab所在环境不互通。有一个团队做的时间久一点&#xff0c;另一个团队想要用并做一些定制。就需要将代码转移到另一个gitlab管理。 参考&#xff1a;【Git】git仓库完整迁移&#xff08;代码&#xff0c;分支&…

GO学习之 Map 操作

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 文章目录 GO系列前言一、什么是Map二、Map的基本操作2.1 定义map2.2 添加和修改键值对2.3 删除键值对2.4 遍历键值对2.5 判断某个key是否存在 三、总结…

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信…

el-table 表格头部合并

<el-table v-loading"listLoading" :key"tableKey" :data"list" stripe border fit highlight-current-rowstyle"width: 100%;" size"mini"><el-table-column label"第一行" align"center">…

免费的音频转换器带你突破音频格式束缚

曾经有一个名叫吴欢的音乐爱好者&#xff0c;他热爱收集各种音频文件&#xff0c;从经典的老歌到新潮的流行曲&#xff0c;样样都不放过。然而&#xff0c;他遇到了一个令人头疼的问题&#xff1a;因为音频格式的不同&#xff0c;他无法将一些珍贵的音乐记录转化为文字形式。他…

面试题 汇总

一、 七层模型和五层模型以及对应的作用 二、 TCP和UDP的区别 UDPTCP是否连接无连接面向连接是否可靠不可靠传输,不使用流量控制和拥塞控制可靠传输,使用流量控制和拥塞控制连接对象个数支持一对一,一对多,多对一和多对多交互通信只能是一对一通信传输方式面向报文面向字节…

01 Excel常用高频快捷键汇总

目录 一、简介二、快捷键介绍2.1 常用基本快捷键1 复制&#xff1a;CtrlC2 粘贴&#xff1a;CtrlV3 剪切&#xff1a;CtrlX4 撤销&#xff1a;CtrlZ5 全选&#xff1a;CtrlA 2.2 常用高级快捷键1 单元格内强制换行&#xff1a;AltEnter2 批量输入相同的内容&#xff1a;CtrlEnt…

vue3 - element-plus 上传各种 word pdf 文件、图片视频并上传到服务器功能效果,示例代码开箱即用。

效果图 在 vue3 项目中,使用 element plus 组件库的 el-upload 上传组件,进行文件、图片图像的上传功能示例。 完整代码 可直接复制,再改个接口地址。 在这里上传图片和文件是分成

嵌入式和 Java 走哪条路?

JAVA和嵌入式各有千秋&#xff0c;看个人取舍。 想挣钱挣得快一点&#xff0c;挣得多一点&#xff0c;那就选Java&#xff0c;但有中年危机。 想细水长流一点的&#xff0c;选嵌入式&#xff0c;挣钱挣得慢一点&#xff0c;也稳一点&#xff0c;挣得久一点&#xff0c;中年危…

IO进、线程——标准文件IO和时间函数

1.文件IO 最直观的系统调用 1.1打开文件 int open(const char *pathname, int flags, mode_t mode);功能&#xff1a;打开/创建后打开一个文件 返回值&#xff1a;成功返回文件描述符&#xff0c;失败-10 —— 标准输入 1 —— 标准输出 2 —— 标准出错参数说明&#xf…

linux操作历史history定制

history记录 Linux中历史操作记录history是一个很有用的功能&#xff0c;有时忘记了&#xff0c;翻翻以前的命令&#xff0c;十分方便。 # 展示所有历史记录 history # 筛选历史记录 history | grep nginx # 清除全部记录 -c history -c # 指定删除某一行,15是行号 history -…

31. 下一个排列

题目描述 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地…

ACwing 1081. 度的数量

文章目录 题意思路代码 题意 给你一段区间[x, y]求其中满足一个数恰好等于K个互不相等的B的整数次幂之和的数的个数。 例如&#xff1a;x 15, y 20, k 2, b 2&#xff0c;那么对于这个区间有且仅有三个数满足题意&#xff1a; 17 2 4 2 0 10001 17 2^42^0 10001 1724…