C#中的原始/非可空类型名称

时间:2016-10-15 23:53:41

标签: c#

C#中的原始类型名称是什么?是的,我们有类似的答案,但只提及类型,而不是类型名称: https://stackoverflow.com/a/13530321/3691653

E.g。它提到的类型包括System.Int32System.Single,但不是类型名intfloat,它们也会为我编译。那么什么是类型名称的完整列表,包括其别名?

换句话说,我对需要Nullable<>的非可空类型名/类型名感兴趣。关键字,以便能够设置为null。

3 个答案:

答案 0 :(得分:1)

喜欢这些:

alias   type (in System namespace)

byte    Byte
sbyte   SByte
short   Int16
ushort  UInt16
int     Int32
uint    UInt32
long    Int64
ulong   UInt64
decimal Decimal
float   Single
double  Double

https://msdn.microsoft.com/en-us/library/ya5y69ds.aspx

阅读其余内容

答案 1 :(得分:0)

需要Nullable<>的原始类型和类型名称是两个完全不同的东西。

声明为struct而不是class的任何内容都是不可为空的,并且需要将Nullable<>包裹起来才能设置为空。

A&#34;完整清单&#34;是不可能的,因为任何人都可以写自己的结构。

答案 2 :(得分:0)

如果你想知道的是一个给定的Type是否可以被包装成Nullable&lt;&gt;与否,它等同于询问它是否是值类型:

        Type someType = typeof(int); // then, try to change this to "typeof(string)"
        Type someTypeNullable = null;
        if (someType.IsValueType)
        {
            someTypeNullable = typeof(Nullable<>).MakeGenericType(someType);
        }
        if (someTypeNullable != null)
        {
            Console.WriteLine("nullable version: " + someType + "?");
        }
        else
        {
            Console.WriteLine(someType + " is a reference type");
        }