我想在c#中用一个类而不是一个变量生成一个if语句
我想写作我想在c#中用一个类而不是一个变量生成一个if语句,c#,C#,我想写作 doublenum1; 如果(num1!=双精度) { Console.WriteLine(“无效运算符”); } 但我收到一条错误消息,上面写着“无效的表达式术语'double'” 如果num1不是double,我想让if语句写“Invalid operator”。 你的问题合乎语法,但不合逻辑 double num1; num1是一个double。它只能是double,因为您明确声明它是double if(num1 != double) 除了糟糕的语法之外,由于num1是
doublenum1;
如果(num1!=双精度)
{
Console.WriteLine(“无效运算符”);
}
但我收到一条错误消息,上面写着“无效的表达式术语'double'”
如果num1不是double,我想让if语句写“Invalid operator”。
你的问题合乎语法,但不合逻辑
double num1;
num1
是一个double
。它只能是double
,因为您明确声明它是double
if(num1 != double)
除了糟糕的语法之外,由于num1
是double
,因此完全不需要检查。这永远不可能是真的,所以没有必要检查它
语法 也就是说,您的
num1!=double
无效。您试图将变量的值与给定的变量类型进行比较。你在比较苹果和梨,编译器不知道如何处理
要比较类型,需要获取变量的类型,并将其与其他类型进行比较。大致如下:
public static void Main()
{
double num1 = 0;
if(num1.GetType() == typeof(double))
{
Console.WriteLine("num1 is a double");
}
else
{
Console.WriteLine("num1 is not a double, it is a " + num1.GetType().FullName);
}
int num2 = 0;
if(num2.GetType() == typeof(double))
{
Console.WriteLine("num2 is a double");
}
else
{
Console.WriteLine("num2 is not a double, it is a " + num2.GetType().FullName);
}
}
以及由此产生的输出:
num1是双精度的num2不是双精度的,它是一个System.Int32 除了
num1.GetType()==typeof(double)
之外,还可以使用num1是double
。这是一个更干净的代码,但它们的工作方式并不总是完全相同。对于double
,它们是等效的,但如果您选择的类型可以派生(is
将在派生类型上产生true
,但GetType()==typeof()
将产生false
)
但是,正如我前面提到的,检查您显式定义了其类型的变量的类型毫无意义。类型检查不是很常见,因为您经常声明类型(隐式或显式地,对编译器来说都是一样的)。在处理派生类时,如果您的变量是基类型,并且您对某个特定的派生类型感兴趣,那么它就更有意义了。您想做什么?请详细说明,这是没有道理的。如果条件要做什么,您希望
做什么?num1
是双精度的。它只能是一个double。看起来您要找的是if(num1.GetType()!=typeof(double))
。更多信息和。或者,您可以使用is
运算符:if(num1是double){}
如果num1不是double,我想让if语句写“Invalid operator”。
在什么情况下您认为num1
不是double?比较苹果和梨,可能更容易说,比较苹果和水果——混淆水果的实例和一般类型的水果。@Briansays:我真的同意你的更正,但是初学者对它的正确性(或者更确切地说,为什么它指出了一个不正确的前提)很不清楚。“苹果是水果吗”是正确的英语,本质上是OP想要找出的东西——它只是没有像OP想象的那样翻译成字面意思的代码……一点问题都没有,我同意这是一个棘手的问题。这个成语让我觉得有点滑稽。