И, наконец, последним, что следует знать о спецификации CTS, является то, что в ней содержится четко определенный набор фундаментальных типов данных. Хотя в каждом отдельно взятом языке для объявления того или иного встроенного типа данных из CTS обычно предусмотрено свое уникальное ключевое слово, все эти ключевые слова в конечном итоге соответствуют одному и тому же типу в сборке mscorlib.dll.
В следующей таблице показано, как ключевые типы данных из CTS представляются в C#:
|
Классы типов данных C#. | |
Типы данных в CTS. | Ключевое слово в C#. | |
System. Byte. | byte. | |
System.SByte. | sbyte. | |
System. Int16. | short. | |
System. Int32. | int. | |
System. Int64. | long. | |
System.UInt16. | ushort. | |
System.UInt32. | uint. | |
System.UInt64. | ulong. | |
System. Single. | float. | |
System. Double. | double. | |
System. Object. | object. | |
System. Char. | char. | |
System. String. | String. | |
System. Boolean. | bool. | |
|
Преимущества использования общих типов
I. Наиболее очевидное — повторное использование кода. Нет необходимости создавать два идентичных класса, отличающихся только типами параметров, достаточно создать один с параметризованными типами. При этом использование параметризованных типов позволяет создавать единый программный код для работы с различными типами данных. Например, единожды написанный алгоритм может работать и с целыми числами и с числами с плавающей десятичной точкой, при этом не производя на каждом шаге проверку / приведение типа. Так Generics вытесняют классы объявленные с использованием типа object.
II. Повышение производительности кода по сравнению с использование параметров типа object — нет необходимости выполнять приведение, как уже сказано выше, на каждом шаге, за счет чего получается выигрыш в производительности.
III. Проверка типов в момент компиляции программы. Поскольку не используются параметры типа object, то компилятор может выполнить проверку типа каждого параметра в момент компиляции, поскольку типы для Generic классов жестко задаются в момент объявления переменных классов этого типа.