如何在另一個功能中使用對象?使用多功能對象
main()
{
private void button1_click {
MyClass object = new MyClass();
object.blabla();
}
private void button2_click {
// how can i use object from button1_click ??
}
}
如何在另一個功能中使用對象?使用多功能對象
main()
{
private void button1_click {
MyClass object = new MyClass();
object.blabla();
}
private void button2_click {
// how can i use object from button1_click ??
}
}
使object
成爲定義函數的類的成員變量。
main()
{
private MyClass object;
private void button1_click {
object = new MyClass();
通過將對象存儲在函數的作用域之外。
main()
{
MyClass obj;
private void button1_click
{
obj = new MyClass();
obj.blabla();
}
private void button2_click
{
//maybe check for null etc
obj.dosomethingelse();
}
}
這是正確的 - 但請記住,如果您在其中一個方法中初始化新的MyClass,那麼您將必須檢查它是否已在使用它的其他方法中進行了初始化。 在構造函數中初始化MyClass對象可能會更好,您可以確信它始終爲非null。 (假設這是可能的。)您也可以考慮爲它創建一個屬性,並在使用它時進行延遲加載。 – 2010-06-02 12:49:02
基本上這是一個更基本的問題,這是可以解決的如
class program
{
void Main(string[] args)
{
private MyClass FooInstance;
private void button1_click()
{
// TODO be defensive: check if this.FooInstance is assigned before, to not override it!
this.FooInstance = new MyClass();
this.FooInstance.blablabla();
}
private void button2_click()
{
// TODO add some null check aka make sure, that button1_click() happened before and this.FooInstance is assigned
this.FooInstance = ....;
}
}
}
您也可以選擇延遲加載作爲一個選項(由安德魯·安德森提到的)
+1對於實際使用正確的語法,而不是試圖聲明一個名爲「對象」的變量... – 2010-06-02 12:49:04
:)你可以,但它應該寧願陳述'@ object' – 2010-06-02 12:52:48
基本上答案,所以我不想複製,但你可能想詳細說明......? – 2010-06-02 12:45:34