If-оператор GetType () c # - PullRequest
4 голосов
/ 26 мая 2011

если у меня есть целое число в номинаторе, я сделаю один метод из my1.cs, если у меня будет двойное число в номинаторе / знаменателе, я сделаю метод из другого класса под названием my2.cs. Как я могу кодировать IF,

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

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

Как закодировать этот оператор if: if (numerator.GetType==int){...}?

Основная проблема заключается в следующем: я читаю знаменатель и знаменатель из текстового поля, с var dr1 = textBox1.Text.Split ('/'); ! разделить, но как я могу получить тип из строки ???

Ответы [ 8 ]

10 голосов
/ 26 мая 2011
if (numerator is int) { ... }

или

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

Бывший обычно лучше.

EDIT: Вы говорите, что проблема в разборе чисел из строкового представления. Боюсь, лучший подход здесь - это вызвать type.TryParse и проверить, может ли данная строка быть проанализирована как число данного типа.

1010 * Е.Г. *

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 с, поэтому вам нужно попытаться проанализировать токен как int, прежде чем пытаться проанализировать его как `double.

5 голосов
/ 26 мая 2011
if (numerator.GetType() == typeof(int))
{
    ...
}

typeof (MSDN)

2 голосов
/ 26 мая 2011

Вы можете использовать оператор typeof:

if(typeof(int) == numerator.GetType())
{
    //put code here
}
1 голос
/ 26 мая 2011

Используйте следующее:

if ( value is int ) { }

Вы также можете взглянуть на Общие методы (Руководство по программированию в C #)

1 голос
/ 26 мая 2011

Используйте оператор is в C # .

if(number is int)
1 голос
/ 26 мая 2011

Вы должны попробовать оператор is / as:

if (numerator is int) {...}
0 голосов
/ 15 января 2019

C # 7

if (number is int myint) {//; do something with myint} OR

if (number is double mydouble) {//; do something with mydouble}

Каждый случай истинен, если тип соответствует. Значение будет помещено в переменную.

0 голосов
/ 26 мая 2011

Это должно работать:

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

}

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

Не знаю, почему вы хотите это сделать, хотя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...