2011-05-26 63 views
0

,如果我有提名整型数字,我会做一个方法从my1.cs,如果我有双号在提名/分母,我会从另一个类称为my2.cs做的方法。我怎么可能代码,如果,if语句的GetType()C#

if (number = int) {//; bla bla bla...} OR

if (number = double) {//; bla bla bla...}

如何编写这个if语句:if (numerator.GetType==int){...}

主要问题是在这样的:我读提名和分母从文本框,使用var DR1 = textBox1.Text.Split(“/”); !拆分,但我怎么能从字符串gettype?

+1

一你是否在寻找'if(numerator.GetType()== typeof(int))'?如果没有,请添加到您的问题,因为它是没有什么意义的。 – 2011-05-26 06:42:05

+1

这看起来像是一个问题,其中函数重载或泛型可能比盒装数字更好。 – CodesInChaos 2011-05-26 06:50:39

+0

主要的麻烦在于:我从文本框中读取分子和分母,用var dr1 = textBox1.Text.Split('/'); !拆分,但我怎么能从字符串gettype? – user707895 2011-05-26 06:57:33

回答

7
if (numerator is int) { ... } 

if (numerator.GetType() == typeof(int)) {...} 

前者通常是更好的。

编辑: Нou说的问题是从字符串表示解析数字。恐怕,这里最好的方法是拨打type.TryParse并检查给定字符串是否可以解析为给定类型的数字。

E.g.

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 s时,可以解析为double S,所以你需要尝试试图解析它作为'双前为int解析令牌。

+0

主要的麻烦在于:我从文本框中读取分子和分母,用var dr1 = textBox1.Text.Split('/'); !拆分,但我怎么能从字符串gettype? – user707895 2011-05-26 06:58:18

5
if (numerator.GetType() == typeof(int)) 
{ 
    ... 
} 

typeof (MSDN)

+0

主要的麻烦在于:我从文本框中读取提名者和分母,并使用var dr1 = textBox1.Text。分裂('/'); !拆分,但我怎么能从字符串gettype? – user707895 2011-05-26 07:00:42

+0

@ user707895,用另一个问题解释 – bniwredyc 2011-05-26 07:06:38

1

你应该尝试的是/作为运营商:

if (numerator is int) {...} 
1

您可以使用typeof运算符:

if(typeof(int) == numerator.GetType()) 
{ 
    //put code here 
} 
0

这应该工作:

if (numerator.GetType() == typeof(int)) 
{ 
    // it's an int 

} 

else if (numerator.GetType() == typeof(double)) 
{ 
    // it's a double 
} 

不知道为什么你会想这样做,虽然...

+0

主要的麻烦在于:我从文本框中读取分子和分母,用var dr1 = textBox1.Text.Split('/'); !拆分,但我怎么能从字符串gettype? – user707895 2011-05-26 06:59:40

+0

为什么不把所有东西都转换成双倍? (http://msdn.microsoft.com/en-us/library/zh1hkw6k.aspx)如果用户写入“1”或“1.0”,这将工作。 – 2011-05-26 07:45:00