Встроенные типы (справочник по C#)
В следующей таблице перечислены встроенные типы значений C# .
В следующей таблице перечислены встроенные ссылки на C# типы:
Ключевое слово типа C# | Тип .NET |
---|---|
object |
System.Object |
string |
System.String |
delegate |
System.Delegate |
dynamic |
System.Object |
В предыдущих таблицах ключевое слово типа C# из левого столбца (за исключением делегата и динамических) является псевдонимом соответствующего типа .NET. Они взаимозаменяемы. Например, следующие объявления объявляют переменные одного типа:
int a = 123;
System.Int32 b = 123;
Тип dynamic
аналогичен object
. Основными отличиями являются:
- Операции с выражением
dynamic
привязаны во время выполнения, а не во время компиляции. - Нельзя использовать
new dynamic()
. - Невозможно унаследовать тип от типа
dynamic
.
Ключевое слово delegate
объявляет тип, производный от System.Delegate.
System.Delegate
тип является абстрактным типом.
Ключевое слово void
представляет отсутствие типа. Он используется в качестве типа возвращаемого значения метода, который не возвращает значение.
Язык C# включает специализированные правила для типов System.Span<T> и System.ReadOnlySpan<T>. Эти типы не классифицируются как встроенные типы, так как ключевые слова C# не соответствуют этим типам. Язык C# определяет неявные преобразования из типов массивов и строкового типа в Span<T>
и ReadOnlySpan<T>
. Эти преобразования интегрируют типы Span
в более привычные сценарии программирования. Следующие преобразования определяются как неявные преобразования диапазона:
- Из любого одномерного массива с типом элемента
E
доSystem.Span<E>
- Из любого одномерного массива с типом элемента от
E
доSystem.ReadOnlySpan<U>
, еслиE
допускает ковариантное преобразование или тождественное преобразование вU
- От
System.Span<E>
доSystem.ReadOnlySpan<U>
, когдаE
имеет преобразование ковариации или преобразование идентичности вU
. - От
System.ReadOnlySpan<E>
доSystem.ReadOnlySpan<U>
, когдаE
имеет преобразование ковариации или тождественное преобразование вU
- От
string
доSystem.ReadOnlySpan<char>
Компилятор никогда не игнорирует любое преобразование, определенное пользователем, если существует применимое неявное преобразование диапазона. Неявные преобразования диапазона можно применять к первому аргументу методов расширения , параметру с модификатором this
. Неявные преобразования диапазона не учитываются для преобразований групп методов.