2010-04-28 1 views
1

Ok ребятBasic Вопрос по хранению переменных в C# для использования в других классах

Я в основном имею класс, который принимает в 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; 
    } 

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

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

ответ

6

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

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

0

Вам не нужен вызов g.setDate в TimeLine2.

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