2009-10-27 4 views
0

Я до сих пор не практикуется в OOP .. теперь я знаю importantness его :)получить доступ к письменным свойствам класса

У меня есть много методов, и теперь я хотел бы сохранить собранные строки в публичных переменных в имеют возможность доступа к ним из другой функции.

normaly Я бы сделал только общедоступные или частные переменные с get и set.

Но я думаю, что это не так чисто, потому что это свойство находится в «каждом intellisense».

Я думаю, что для этого в класс может быть «testClass» и определить свойства там.

Но как я могу получить доступ к значениям, которые я написал в свойствах этого класса? Чтобы записать их, я должен создать новый экземпляр класса, но как получить доступ к созданному экземпляру?

// редактировать

protected void GetValues() 
{ 
    // Access to the public variable town. 

    string myNewtown = publictown; 
    string myNewName = publicname; 

    // How to acces to the values which I saved in the class informations? 
    // I like anything like that 
    string myNewtown = informations.publictown; 
    string myNewName = informations.publicname; 

    // or 

    string myNewtown = myinfo.publictown; 
    string myNewName = myinfo.publicname; 

} 

protected void Setvalues() 
{ 
    informations myinfo = new informations() 
    { 
     publicname = "leo", 
     publictown = "london" 
    }; 
} 

private string publicname { get; set; } 
private string publictown { get; set; } 

private class informations 
{ 
    public string publicname { get; set; } 
    public string publictown { get; set; } 
} 

Благодаря

+0

Не могли бы вы оставить немного кода и прокомментировать? Извините, но я не понимаю, чего вы пытаетесь достичь. – Philippe

+0

i отредактировал упование вы понимаете –

+0

Должно ли publicname и publictown быть глобальным (a) для полного приложения, (b) к текущему сеансу или (c) только к одному запросу ASP.NET, которое вы сейчас обрабатываете? – Heinzi

ответ

1

Если вы хотите, чтобы ваши свойства должны быть доступны без создания экземпляра, используйте static ключевое слово.

EDIT: В вашем примере, вы бы заменить

public string publicname { get; set; } 

с

public static string publicname { get; set; } 

, который позволяет читать поле

string myNewname = informations.publicname; 

и установить его с

informations.publicname = "whatever"; 

Конечно, это означает, что в вашем приложении может быть только один экземпляр publicname - в частности, в приложении ASP.NET это может быть не то, что вы хотите!

+0

Благодарю вас, ребята. это то, что я хочу! –

+0

так приятно! Ты делаешь меня счастливым. это самый чистый способ разработки, не так ли? .... почему этот «статический» не установлен по умолчанию для свойств, это более полезно ..? –

+1

Свойства и методы, помеченные как 'static', являются общими для всех используемых ими объектов. Таким образом, они похожи на глобальные переменные, что делает их проблемой с точки зрения проверки, отладки, параллельного доступа из нескольких потоков и т. Д. Их нужно использовать экономно. –

1

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

Имея взглянуть на свой образец, я могу предложить вам следующие изменения:

protected void GetValues() 
{ 
// Access to the public variable town. 

    string myNewtown = publictown; 
    string myNewName = publicname; 

// or 

    string myNewtown = myinfo.publictown; 
    string myNewName = myinfo.publicname; 
} 

protected void Setvalues() 
{ 
    publicname = "leo"; 
    publictown = "london"; 
} 

// we store reference to internal object 
informations myinfo = new informations(); 
// and delegate property access to its properties. 
public string publicname 
{ 
    get{ return informations.publicname;} 
    set{ informations.publicname = value; } 
} 
public string publictown 
{ 
    get{ return informations.publictown;} 
    set{ informations.publictown = value; } 
} 


private class informations 
{ 
    public string publicname { get; set; } 
    public string publictown { get; set; } 
} 
+0

я отредактировал упование вы понимаете –

+0

также спасибо .. действительно хорошо! Кстати, это самый чистый путь? или я могу развить его как больше clena :)? –

+1

Дизайн OO обычно связан с перемещением операций и данными. Поэтому рассмотрите возможность перемещения логики в настоящее время с использованием 'publicname' и' publictown' в ваш 'информационный' класс. Трудно сказать больше, не зная задачи, конечно. –