Я работаю над простым консольным приложением. Я хочу, чтобы приложение распечатало таблицу, в которой указаны значения MinValue и MaxValue различных числовых c типов.
У меня есть один оператор Console.WriteLine, который выводит заголовок таблицы.
После этого я хочу, чтобы для каждого типа была напечатана одна строка (с именем типа, MinValue и Maxvalue в качестве столбцов). Конечно, я мог бы сделать это с помощью одного оператора WriteLine для каждого типа, например, для sbyte: typeof (sbyte) .Name, sbyte.MinValue, sbyte.MinValue. Но я подумал, что попытаюсь решить его с помощью foreach l oop.
Вот мой текущий код:
List<Type> types = new List<Type>()
{
typeof(sbyte),
typeof(byte),
typeof(short),
typeof(ushort),
typeof(int),
typeof(uint),
typeof(long),
typeof(ulong),
typeof(float),
typeof(double),
typeof(decimal)
};
// Heading
Console.WriteLine(
format: "{0,-8} {1,6:N0} {2, 12:N0}",
arg0: "Type",
arg1: "Min",
arg2: "Max");
foreach (var type in types)
{
Console.WriteLine(
format: "{0,-8} {1,6:N0} {2, 12:N0}",
arg0: type.Name,
arg1: type.MinValue,
arg2: type.MaxValue);
}
Это работает для свойства Name, но не для MinValue и MaxValue, которые выдают ошибку: (пример MinValue :) «Тип» не содержит определение для MinValue и ни один доступный метод расширения MinValue, принимающий первый аргумент типа «Тип», не может быть найден (вам не хватает директивы using или ссылки на сборку?) "
Я думал, что это будет работать, поскольку все типы в моем списке имеют свойства Min / MaxValue.
Я также пробовал использовать список строк (имена типов, хранящихся в виде строк), что, очевидно, не сработало.
1) Проблема в том, что я пытаюсь использовать переменную в качестве типа?
2) И почему это не проблема со свойством Name?
3) есть способ обойти это, и все еще использую foreach l oop?