2 回答

TA貢獻1864條經驗 獲得超2個贊
這是一個范圍界定問題。當您在代碼塊內定義變量時,它不會存在于該代碼塊之外。例如:
int a = 2;
{
int b = 3;
}
Console.WriteLine("A : " + a.ToString());
Console.WriteLine("B : " + b.ToString());
會打印 A 很好,但會在嘗試打印 B 時拋出錯誤,因為 B 是在打印語句之前結束的代碼塊中定義的。
解決方案是在與您需要的代碼塊相同(或更高)的代碼塊中定義您需要的變量。比較:
int a = 2;
int b = 0;
{
b = 3;
}
Console.WriteLine("A : " + a.ToString());
Console.WriteLine("B : " + b.ToString());
這會正常工作,現在打印 A : 2 和 B : 3。
所以,改變
if (sex == "boy")
{
Console.WriteLine("You are a boy");
Boy real_sex = new Boy
{
Firstname = "George",
Secondname = "Smith"
};
}
else if (sex == "girl")
{
Console.WriteLine("You are a girl");
Girl real_sex = new Girl
{
Firstname = "Charlotte",
Secondname = "Smith"
};
}
real_sex.Characteristics()
至
Sex real_sex = null;
if (sex == "boy")
{
Console.WriteLine("You are a boy");
real_sex = new Boy
{
Firstname = "George",
Secondname = "Smith"
};
}
else if (sex == "girl")
{
Console.WriteLine("You are a girl");
real_sex = new Girl
{
Firstname = "Charlotte",
Secondname = "Smith"
};
}
real_sex.Characteristics()
當然,您將需要一個名為“Sex”的父類,男孩和女孩從該類派生出來,以便您可以將 real_sex 設置為男孩或女孩。

TA貢獻1789條經驗 獲得超10個贊
You have escope problem.
You need to declara the variable outside the if statement.
If (){
Code and variables that only exist here can only run here
//This method have to run here
Real_Sex.Characteristics();
Have to run here
}
Else {
Same here...
}
Or you can make a dynamic variable outside the scope
Console.WriteLine("Are you a boy or a girl?"); string sex = Console.ReadLine();
dynamic real_sex;
Console.WriteLine(sex);
while ((sex != ("boy")) && (sex != ("girl")))
{
Console.WriteLine("That is not a valid sex. Please answer the question again.");
sex = Console.ReadLine(); }
if (sex == "boy") {
Console.WriteLine("You are a boy");
real_sex = new Boy
{ Firstname = "George",
Secondname = "Smith" };
}
else if(sex == "girl")
{
Console.WriteLine("You are a girl");
real_sex = new Girl
{ Firstname = "Charlotte",
Secondname = "Smith" };
}
real_sex.Characteristics();
- 2 回答
- 0 關注
- 493 瀏覽
添加回答
舉報