Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
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, most C# type keywords from the left column are aliases 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:
- Operations on a
dynamicexpression are bound at runtime, not at compile time. - You can't use
new dynamic(). - You can't derive a type from the
dynamictype.
The delegate keyword is a built-in reference type keyword that declares a type derived from System.Delegate. Unlike the other built-in type keywords, delegate isn't an alias for a specific .NET type. Instead, it declares custom types that derive from the abstract System.Delegate type. Similarly, dynamic represents runtime binding behavior rather than being a direct alias for a specific .NET 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:
- From any single-dimensional array with element type
EtoSystem.Span<E> - From any single-dimensional array with element type
EtoSystem.ReadOnlySpan<U>, whenEhas covariance conversion or an identity conversion toU - From
System.Span<E>toSystem.ReadOnlySpan<U>, whenEhas a covariance conversion or an identity conversion toU - From
System.ReadOnlySpan<E>toSystem.ReadOnlySpan<U>, whenEhas a covariance conversion or an identity conversion toU - From
stringtoSystem.ReadOnlySpan<char>
The compiler never ignores any user defined conversion where an applicable implicit span conversion exists. Implicit span conversions can be applied to receiver parameter of extension members. The receiver parameter is specified by the extension keyword in an extension member. The receiver parameter is the first parameter of an extension method using the this modifier. Implicit span conversions aren't considered for method group conversions.