2011-05-26 61 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