[英]If-statement GetType() c#
如果我在提名者中有整数,我将从 my1.cs 执行一种方法,如果我在提名者/分母中有双数,我将从另一个名为 my2.cs 的 class 执行方法。 我如何编码 IF,
if (number = int) {//; bla bla bla...}
if (number = int) {//; bla bla bla...}
或
if (number = double) {//; bla bla bla...}
如何编写这个 if 语句: if (numerator.GetType==int){...}
?
主要的麻烦在于:我从文本框中读取了提名者和分母, var dr1 = textBox1.Text.Split('/'); , 分裂? 但是我如何从字符串中获取类型???
if (numerator is int) { ... }
或者
if (numerator.GetType() == typeof(int)) {...}
前者通常更好。
编辑:Нou 说问题是从字符串表示中解析数字。 恐怕,这里最好的方法是调用type.TryParse
并检查给定的字符串是否可以解析为给定类型的数量。
例如
var tokens = line.Split('/');
double dArg1,dArg2; int iArg1, iArg2;
if (int.TryParse(tokens[0], out iArg1)
&& int.TryParse(tokens[1], out iArg2)){
return iArg1/iArg2;
} else if (double.TryParse(tokens[0], out dArg1)
&& double.TryParse(tokens[1], out dArg2)){
return dArg1/dArg2;
} else { /* handle error */ }
请注意,所有int
都可以解析为double
,因此您需要尝试将 token 解析为int
,然后再尝试将其解析为 `double.
if (numerator.GetType() == typeof(int))
{
...
}
您可以使用 typeof 运算符:
if(typeof(int) == numerator.GetType())
{
//put code here
}
您应该尝试 is/as 运算符:
if (numerator is int) {...}
if(number is int)
C# 7
if (number is int myint) {//; do something with myint} OR
if (number is double mydouble) {//; do something with mydouble}
如果类型匹配,则每种情况都为真。 转换值将被放置在变量中。
这应该有效:
if (numerator.GetType() == typeof(int))
{
// it's an int
}
else if (numerator.GetType() == typeof(double))
{
// it's a double
}
不知道你为什么要这样做......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.