比较类型时无法访问代码
Code unreachable when comparing types
问题:我的else-statement无法访问,我做错了什么?
在编程方面非常非常新,我正在尝试比较类型,例如,当我要求输入整数时,人们无法输入字符串。
我的代码可能很糟糕,如果我能得到 header 做什么以及为什么 if-argument 跳过 else-part 我会非常高兴!
谢谢!
class Program
{
static void Main(string[] args)
{
int integer = 0;
start:
Console.WriteLine("How old are you?: ");
int svar = int.Parse(Console.ReadLine());
Utility.CompareTypes(svar, integer);
if (true)
{
Console.WriteLine("Thanks");
}
else
{
Console.WriteLine("You have to enter a number!");
goto start;
}
}
}
class Utility
{
public static bool CompareTypes<T01, T02>(T01 type01, T02 type02)
{
return typeof(T01).Equals (typeof(T02));
}
}
:c
其实不是代码问题,而是逻辑问题...
if (true) // <--- this will ALWAYS be true
{
Console.WriteLine("Thanks");
}
else // <--- therefore this will NEVER happen
{
Console.WriteLine("You have to enter a number!");
goto start;
}
由于您的 else
块在任何逻辑情况下都不可能执行,因此整个代码块可以简化为:
Console.WriteLine("Thanks");
为了执行 else
块,if
语句中检查的条件需要是 false
。您目前没有检查任何实际情况,只是一个硬编码的 true
值。
也许您是想使用上一行代码的结果?像这样:
var typesAreSame = Utility.CompareTypes(svar, integer);
if (typesAreSame)
{
//...
问题:我的else-statement无法访问,我做错了什么?
在编程方面非常非常新,我正在尝试比较类型,例如,当我要求输入整数时,人们无法输入字符串。
我的代码可能很糟糕,如果我能得到 header 做什么以及为什么 if-argument 跳过 else-part 我会非常高兴!
谢谢!
class Program
{
static void Main(string[] args)
{
int integer = 0;
start:
Console.WriteLine("How old are you?: ");
int svar = int.Parse(Console.ReadLine());
Utility.CompareTypes(svar, integer);
if (true)
{
Console.WriteLine("Thanks");
}
else
{
Console.WriteLine("You have to enter a number!");
goto start;
}
}
}
class Utility
{
public static bool CompareTypes<T01, T02>(T01 type01, T02 type02)
{
return typeof(T01).Equals (typeof(T02));
}
}
:c
其实不是代码问题,而是逻辑问题...
if (true) // <--- this will ALWAYS be true
{
Console.WriteLine("Thanks");
}
else // <--- therefore this will NEVER happen
{
Console.WriteLine("You have to enter a number!");
goto start;
}
由于您的 else
块在任何逻辑情况下都不可能执行,因此整个代码块可以简化为:
Console.WriteLine("Thanks");
为了执行 else
块,if
语句中检查的条件需要是 false
。您目前没有检查任何实际情况,只是一个硬编码的 true
值。
也许您是想使用上一行代码的结果?像这样:
var typesAreSame = Utility.CompareTypes(svar, integer);
if (typesAreSame)
{
//...