【问题标题】:Basic Question on storing variables c# for use in other classes关于存储变量 c# 以在其他类中使用的基本问题
【发布时间】:2010-04-28 15:33:47
【问题描述】:

大家好

我基本上有一个类,它通过其方法签名之一的参数接收 3 个字符串。

然后我尝试将这 3 个字符串映射到全局变量以作为存储它们的一种方式。

但是,当我在实例化此类后尝试从另一个类调用这些全局变量时,它们显示为空值。

这是通过 setDate 方法获取 3 个字符串的类,以及映射..

 public class DateLogic
{

    public string year1;
    public string month1;
    public string day1;

    public DateLogic()
    {


    }

    public void setDate(string year, string month, string day) {

        year1 = year;
        month1 = month;
        day1 = day;


    // getDate();

    }

    public string getDate() {
     return year1 + " " + month1 + " " + day1;
    }

}

之后我尝试从这里调用这个类

 public static string TimeLine2(this HtmlHelper helper, string myString2)
    {


        DateLogic g = new DateLogic();

        string sday = g.day1;
        string smonth = g.month1;
        string syr = g.year1;
    }

我一直在调试,值一直到全局变量,但是从这里的此类调用时,它不显示它们,只显示 null。

这是因为我正在创建一个全新的实例,我该如何解决这个问题?

【问题讨论】:

    标签: c# variables get set storage


    【解决方案1】:

    year1month1day1 不是“全局变量”——它们是为该类型定义的实例字段。每个DateLogic 实例都有单独的字段。

    可以通过使用static 字段来实现您想要的,但这会带来很多麻烦(特别是如果您的代码是线程化的或在网络服务器上运行,这是由HtmlHelper) - 将配置的 DateLogic 实例传递给需要它的代码会好多更好。

    【讨论】:

      【解决方案2】:

      您在 TimeLine2 中错过了对 g.setDate 的调用。

      另外,仅供参考,它们不是“全局”变量。没有对象引用就可以访问全局变量,无论如何这不是您想要的。你说的是类变量。

      【讨论】:

        猜你喜欢
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 2021-01-24
        • 2015-08-06
        • 1970-01-01
        • 1970-01-01
        • 2018-06-11
        • 1970-01-01
        相关资源
        最近更新 更多