2014-10-11 19 views
4

我對C#,WPF和OOP完全陌生,並且面臨着對象的問題。如何從我的方法外部訪問c sharp中的對象?

我正在創建一個小型RPG,並且有一個Player類,該類有一個構造函數,可以爲實例化對象自動分配默認值。

所以用WPF/XAML,我創建了一個鏈接到一個函數的按鈕;當我按下按鈕,該功能將被執行:

private void NewGameClick(object sender, RoutedEventArgs e) 
{ 
    Player hero = new Player("Tristan"); 

    MessageBox.Show("The character " + hero.Name + " has been created."); 
} 

消息框確實顯示了角色的名字,但我不能使用由函數創建的「英雄」對象的其餘部分我碼。是否因爲該對象在函數結束時被刪除?有什麼方法可以保留該對象並在該函數之外使用它?

謝謝!

+2

你需要聲明功能外的英雄對象... – Sparky 2014-10-11 21:45:16

回答

9

hero對象只存在於NewGameClick方法內部,並且在方法執行完成後將超出範圍。

你可以在方法外聲明你的對象,它將在該類的範圍內。例如。

public class Game 
{ 
    Player hero = new Player("Tristan"); 

    private void NewGameClick(object sender, RoutedEventArgs e) 
    {  
     MessageBox.Show("The character " + hero.Name + " has been created."); 
    } 
} 

然後,您將遊戲classprivate Player對象一起工作。

1

當你在一個函數中聲明一個變量時,你只能在函數的作用域內使用這個變量。你必須使用你的類的成員變量,或者返回這個玩家。

1

在您的課堂之外聲明您的方法以外的玩家。

1

如果你想在這個方法之外使用英雄對象,那麼你應該在這個方法之外聲明它爲全局變量。

甚至可以使用屬性訪問,設置和獲取英雄對象。

我會建議在這個位置的一些進一步閱讀: http://www.dotnetperls.com/global-variable

0

充分利用hero變量的類的字段。您也可以將該字段包裝到屬性中。

1

在函數內聲明的變量具有函數本身的生命週期(從技術上講,由於垃圾收集器太聰明,可能比函數本身更短)。你想要的是根據你的需要來確定變量的範圍。也就是說,它可以作爲一個字段的類實例(即字段的生命週期不與類實例的生命週期關聯),或者你可以將變量的範圍設置爲靜態的(即它的生命週期幾乎是整個生命週期應用程序,除非你清除或替換靜態變量)

相關問題