我已經在Die類中初始化了一個對象'_currDie',運行了一個if語句將該對象改爲派生類對象,然後運行一個方法。從派生回覆到基類
問題是,當它離開if語句時,它似乎正在恢復到基類。
namespace CharacterSheet
{
public partial class DiceRoller : Form
{
Die _currDie;
public DiceRoller()
{
InitializeComponent();
}
private void chooseSides_SelectedIndexChanged(object sender, EventArgs e)
{
if (chooseSides.SelectedItem.ToString() == "D4")
{
D4 _currDie = new D4();
}
if (chooseSides.SelectedItem.ToString() == "D6")
{
D6 _currDie = new D6();
}
if (chooseSides.SelectedItem.ToString() == "D8")
{
D8 _currDie = new D8();
}
if (chooseSides.SelectedItem.ToString() == "D10")
{
D10 _currDie = new D10();
}
if (chooseSides.SelectedItem.ToString() == "D20")
{
D20 _currDie = new D20();
}
if (chooseSides.SelectedItem.ToString() == "Percentile")
{
Percentile _currDie = new Percentile();
}
}
private void Roll_Click(object sender, EventArgs e)
{
_currDie.Roll();
string currResult = Convert.ToString(_currDie.RollResult);
MessageBox.Show(currResult);
}
}
}
這是基礎類
namespace CharacterSheet
{
public class Die
{
public int Sides { get; set; }
private Random rng = new Random();
public int rollResult;
public int RollResult
{
get
{
return rollResult;
}
}
public virtual void Roll()
{
rollResult = rng.Next(Sides) + 1;
}
}
}
,衍生類我一直在
namespace CharacterSheet
{
public class D4:Die
{
public D4()
{
Sides = 4;
}
}
}
測試我設置爲第一if語句,當我通過一步突破點_currDie.Roll();我可以清楚地看到_currDie從D4對象更改爲Die對象。 在哪一點我得到一個System.NullReferenceException
我試過實例化_currDie沒有定義類,但然後該方法獲取錯誤,因爲沒有Roll對象的方法。
你輸入得太快我放棄 –
我最初嘗試了一個switch語句,但遇到了類似的異常。現在我知道問題是聲明一個新的局部變量,我會再試一次。謝謝! –