Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как организовать конструкцию switch-case для определения типов данных передающего объекта в switch? Что писать в case??

BaGa ByRJl9eV Ученик (19), закрыт 3 года назад
Лучший ответ
Николай Веселуха Высший разум (359979) 3 года назад
using System;
namespace Answer {
class Program {
static void Main() {
var x = 0;
Test(x);
Console.ReadKey();

}
static void Test(object o) {
switch (o.GetType().ToString()) {
case "System.Int32": Console.WriteLine(o.GetType()); break;
}
}
}
}
BaGa ByRJl9eVУченик (19) 3 года назад
спс
Николай Веселуха Высший разум (359979) Пожалуйста.
Остальные ответы
вайцы фафцуа Гуру (3636) 3 года назад
У тебя в коде arg.GetType() выдает тип объекта.

case sbyte означает, что ожидается, что типом является sbyte.
Если так и оказывается, то выполняется Console.WriteLine(); или другой код, допустим который работает именно с этим типом данных.

Из вариантов там может быть помимо sbyte что-то другое. Например String или Integer.
Вот и добавляешь case String и тоже самое Integer
BaGa ByRJl9eVУченик (19) 3 года назад
божее, это не рабочий код, ведь он с этим case не работает
вайцы фафцуа Гуру (3636) BaGa ByRJl9eV, вчём заключается вопрос? Я на твоем примере описал как работает switch case.
BaGa ByRJl9eVУченик (19) 3 года назад
а в кейсе вроде всё норм, а тут не получаеться
вайцы фафцуа Гуру (3636) BaGa ByRJl9eV, ну тогда хз. C# не совсем моя тема. В крайний случай, переводи просто результат GetType в string и сравнивай строки.
lem Мастер (1803) 3 года назад
можно через GetTypeCode, но поддерживает только встроенные типы в enum TypeCode

var a = 1;
string b = "";

switch (a.GetTypeCode())
{
case TypeCode.Int32:
b= a.ToString(); break;
default:
b = null; break;

}
Похожие вопросы