Основной вопрос по хранению переменных c # для использования в других классах - PullRequest
1 голос
/ 28 апреля 2010

Хорошо, ребята

У меня в основном есть класс, который принимает 3 строки через параметр одной из сигнатур его метода.

Затем я попытался отобразить эти 3 строки в глобальные переменные, чтобы сохранить их.

Однако, когда я пытаюсь вызвать эти глобальные переменные из другого класса после создания экземпляра этого класса, они отображаются как нулевые значения.

это класс, который получает 3 строки через метод setDate и отображение ..

 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;
    }

Я отлаживал, и значения доходят до глобальных переменных, но при вызове из этого класса он здесь не показывает их, просто показывает ноль.

Это потому, что я создаю совершенно новый экземпляр, как мне решить эту проблему?

Ответы [ 2 ]

6 голосов
/ 28 апреля 2010

year1, month1 и day1 не являются "глобальными переменными" - это поля экземпляра , определенные для этого типа. Каждый экземпляр DateLogic имеет отдельные поля.

Вы могли бы достичь того, что вы хотите, используя поля static, но это доставляет много хлопот (особенно, если ваш код работает в потоковом режиме или работает на веб-сервере, что подразумевается HtmlHelper) - было бы намного лучше передать настроенный экземпляр DateLogic в код, который нуждается в этом.

0 голосов
/ 28 апреля 2010

Вам не хватает вызова g.setDate в TimeLine2.

Кроме того, к вашему сведению, они не являются "глобальными" переменными. Глобальная переменная будет доступна без ссылки на объект и в любом случае это не то, что вам нужно. Вы говорите о переменных класса.

...