相关疑难解决方法(0)

C#int,Int32和enums

如果int是同义词的Int32原因

enum MyEnum : Int32
{
    Value = 1
}
Run Code Online (Sandbox Code Playgroud)

......不编译?在哪里

enum MyEnum : int
{
    Value = 1
}
Run Code Online (Sandbox Code Playgroud)

即使将光标悬停在int字上,也会显示struct System.Int32?

.net c# int enums int32

33
推荐指数
2
解决办法
5106
查看次数

为什么枚举声明接受短而不是Int16

我想声明一个非默认底层类型的新枚举.这有效:

public enum MyEnum : short
{ A, B, C, }
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么这不编译:

public enum MyEnum : System.Int16
{ A, B, C, }
Run Code Online (Sandbox Code Playgroud)

编译说

输入byte,sbyte,short,ushort,int,uint,long或ulong

我知道short是所有.NET版本(包括32/64位版本)的Int16的别名.我不明白为什么编译器在该特定情况下给别名赋予不同的含义.

任何解释?

.net c# enums

19
推荐指数
1
解决办法
1万
查看次数

为什么我不能以ennt关闭UInt16?

鉴于以下代码:

static void Main()
{
    Console.WriteLine(typeof(MyEnum).BaseType.FullName);
}

enum MyEnum : ushort
{
    One = 1,
    Two = 2
}
Run Code Online (Sandbox Code Playgroud)

它输出System.Enum,这意味着这里的冒号与继承无关,它只是指定了枚举的基本类型,对不对?

但是,如果我更改我的代码如下:

enum MyEnum : UInt16
{
    One = 1,
    Two = 2
}
Run Code Online (Sandbox Code Playgroud)

我会得到一个编译错误.为什么?是不是UInt16ushort一样吗?

.net c#

13
推荐指数
2
解决办法
3585
查看次数

C#:Int16和short一样吗?

如果short只是使用Int16结构的C#语法,你可以像这样互换:

Int16 x = 10;
//or
short x = 10;
Run Code Online (Sandbox Code Playgroud)

那为什么你这样做:

public enum DaysOfWeek : short
{

}
Run Code Online (Sandbox Code Playgroud)

但不是这个:

public enum DaysOfWeek : Int16
{

}
Run Code Online (Sandbox Code Playgroud)

错误是 Type byte, sbyte, short, ushort, int, uint, long or ulong expected.

c#

10
推荐指数
0
解决办法
8998
查看次数

为什么这个枚举声明现在有效?

在回答另一个问题时,Jon Skeet提到有一个奇怪的事情正在进行定义enums.他的回答.

他声明,enum只有类型别名而不是框架类型(int有效,Int32不是等)才能重新定义a的基础类型.

public enum Foo : UInt32 {} // Invalid
public enum Bar : uint   {} // Valid
Run Code Online (Sandbox Code Playgroud)

现在我试图重现(在VS2015中使用C#6/Roslyn),我没有得出相同的结论:

public enum TestEnum : UInt32
{

}
Run Code Online (Sandbox Code Playgroud)

public enum MyEnum : uint
{

}
Run Code Online (Sandbox Code Playgroud)

都是完全有效的.为什么会这样?或者改变了什么?


编辑:

所以为了清理事情,这是C#6中的一个变化,尚未记录,并且很快就会记录下来,因为你可以从Roslyn Github上的这个git问题中读到

.net c# enums c#-6.0

4
推荐指数
1
解决办法
331
查看次数

标签 统计

c# ×5

.net ×4

enums ×3

c#-6.0 ×1

int ×1

int32 ×1