Как найти тип возврата в C #? - PullRequest
0 голосов
/ 12 октября 2010

У меня есть сомнения относительно получения типа возврата.

class SampleOnOUTandREF
{


    static void Main(string[] args)
    {
        Console.Write(typeof(int));
        Console.Read();
    }
}

Если я напишу это, на выходе будет System.Int32.

Но в моем приложении я хочу получить результат как "int", если я дам "System.Int32". Пожалуйста, помогите относительно этой проблемы. В моем приложении я использую System.Reflection для чтения .dll.

Ответы [ 4 ]

5 голосов
/ 12 октября 2010

int является ключевым словом, специфичным для C #.

Библиотека отражений не зависит от языка и не знает ключевых слов, специфичных для C #.

Вместо этого вы можете написать Dictionary<Type, string>содержать типы ключевых слов C #.

3 голосов
/ 12 октября 2010

В разделе 4.1.4 спецификации C # перечислены все типы значений, для которых в C # зарезервированы слова, а в 4.2 упоминаются классы с псевдонимами:

object: System.Object
string: System.String
sbyte: System.SByte
byte: System.Byte
short: System.Int16
ushort: System.UInt16
int: System.Int32
uint: System.UInt32
long: System.Int64
ulong: System.UInt64
char: System.Char
float: System.Single
double: System.Double
bool: System.Boolean 
decimal: System.Decimal

Как упоминает SLaks, вы можете иметь словарь, отображающий типы CLR в типы C #, например:

new Dictionary<string, string> {
{ "System.SByte", "sbyte" },
{ "System.Byte", "byte" },
...

или как это:

new Dictionary<Type, string> {
{ typeof(sbyte), "sbyte" },
{ typeof(byte), "byte" },
....
1 голос
/ 12 октября 2010

Я перефразирую то, что сказали другие;Я все еще думаю, что могу добавить значение:.

int не является именем типа;это ключевое слово C #, которое компилятор рассматривает как синоним для типа System.Int32.Вы можете думать так: после компиляции кода все ссылки на int исчезают и заменяются ссылками на System.Int32.System.Int32 является частью CTS , и это то, на что будут ссылаться typeof или GetType.

0 голосов
/ 12 октября 2010

Ключевое слово C # int - это просто псевдоним для System.Int32. Аналогично, bool - это псевдоним для System.Boolean, а string - это псевдоним для System.String.

.

Поскольку все это псевдонимы, а не фактические типы, вы никогда не увидите их возвращенными отражением. Однако возвращаемые типы полностью эквивалентны.

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