如何将C#中的xValue、yValue、zValue设为公共变量供跨页面使用?
解决方案
很简单,你只需要在现有的CommonData公共类里添加三个静态公共字段(或者封装成属性)来存储x、y、z的值,然后在SetData方法里完成赋值,就能在其他页面直接访问这些变量了。
修改后的完整代码
public class CommonData { // 新增的公共静态变量,供其他页面访问 public static string xValue = string.Empty; public static string yValue = string.Empty; public static string zValue = string.Empty; public static string o = string.Empty; public static void SetData(string s) { String[] vals = s.Split(';'); o = "X=" + vals[0] + " Y=" + vals[1] + " Z=" + vals[2]; // 给三个公共变量赋值 xValue = vals[0]; yValue = vals[1]; zValue = vals[2]; } }
在其他页面的使用方式
先调用SetData方法初始化数据,之后直接通过类名访问这些静态变量就行:
// 第一步:传入字符串完成数据初始化 CommonData.SetData("15;30;45"); // 第二步:在任意页面读取值 var currentX = CommonData.xValue; // 得到"15" var currentY = CommonData.yValue; // 得到"30" var currentZ = CommonData.zValue; // 得到"45"
更安全的小优化
如果想避免外部代码意外修改这些变量的值,可以把字段封装成只读属性,只允许CommonData内部修改:
public class CommonData { // 封装为只读属性,外部只能读取 public static string xValue { get; private set; } = string.Empty; public static string yValue { get; private set; } = string.Empty; public static string zValue { get; private set; } = string.Empty; public static string o { get; private set; } = string.Empty; public static void SetData(string s) { String[] vals = s.Split(';'); o = "X=" + vals[0] + " Y=" + vals[1] + " Z=" + vals[2]; xValue = vals[0]; yValue = vals[1]; zValue = vals[2]; } }
这样外部代码只能读取xValue、yValue和zValue,只有SetData方法能修改它们,数据安全性更高。
内容的提问来源于stack exchange,提问作者Yann Kang
相关产品推荐
相关产品推荐

