Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following table lists the C# built-in value types:
The following table lists the C# built-in reference types:
C# type keyword | .NET type |
---|---|
object |
System.Object |
string |
System.String |
delegate |
System.Delegate |
dynamic |
System.Object |
In the preceding tables, the C# type keyword from the left column (except delegate and dynamic) is an alias for the corresponding .NET type. They're interchangeable. For example, the following declarations declare variables of the same type:
int a = 123;
System.Int32 b = 123;
The dynamic
type is similar to object
. The main differences are:
dynamic
expression are bound at runtime, not at compile time.new dynamic()
.dynamic
type.The delegate
keyword declares a type derived from System.Delegate. System.Delegate
type is an abstract type.
The void
keyword represents the absence of a type. You use it as the return type of a method that doesn't return a value.
The C# language includes specialized rules for the System.Span<T> and System.ReadOnlySpan<T> types. These types aren't classified as built-in types, because there aren't C# keywords that correspond to these types. The C# language defines implicit conversions from array types and the string type to Span<T>
and ReadOnlySpan<T>
. These conversions integrate Span
types into more natural programming scenarios. The following conversions are defined as implicit span conversions:
E
to System.Span<E>
E
to System.ReadOnlySpan<U>
, when E
has covariance conversion or an identity conversion to U
System.Span<E>
to System.ReadOnlySpan<U>
, when E
has a covariance conversion or an identity conversion to U
System.ReadOnlySpan<E>
to System.ReadOnlySpan<U>
, when E
has a covariance conversion or an identity conversion to U
string
to System.ReadOnlySpan<char>
The compiler never ignores any user defined conversion where an applicable implicit span conversion exists. Implicit span conversions can be applied to the first argument of extension methods, the parameter with the this
modifier. Implicit span conversions aren't considered for method group conversions.
.NET feedback
.NET is an open source project. Select a link to provide feedback:
Please sign in to use this experience.
Sign in