now*_*ed. 4 .net c# enums visual-studio-2010 .net-4.5
我有一个以下函数接受枚举值,并根据枚举值返回一个常量值(在不同的类中).现在我得到一个"Constant initializer missing"错误.
public const int Testfunction(TESTENUM TestEnum)
{
switch(TestEnum)
{
case TestEnum.testval1:
return testclass.constvalue;
case TestEnum.testVal2:
return testclass.constvalue1;
case TestEnum.testVal3:
return testclass.constvalue2;
}
}
Run Code Online (Sandbox Code Playgroud)
函数的返回类型究竟如何?(我使用对象返回类型,这不会抛出任何错误)
有没有其他选择来实现相同的目标?
Eri*_*ert 24
这里发生的是编译器认为您正在尝试声明一个名为Testfunction的公共常量整数字段,并且发现没有= 123;跟随标识符时非常惊讶.它告诉你它期望初始化器.
C#编译器中有许多地方,开发团队预计C和C++用户会错误地使用通用的C/C++语法.例如,有一个特殊的错误消息int x[];,指出你可能意味着int[] x;.这是另一个地方的示例,其中编译器可以从检测常见错误的特殊用途错误消息中受益,并描述如何修复它.如果您认为该功能很好,可以考虑请求该功能.
更一般地说,C#中的"const"意味着与C或C++中的意思不同.C#不具有不改变状态的"const函数"的概念,或者提供可提供潜在可变数据的只读视图的"const引用".在C#中,"const"仅用于声明字段(或本地)将被视为编译时常量.(并且"readonly"用于声明一个字段只能在构造函数中写入,这也非常有用.)
从函数返回类型中删除"const"关键字应该可以解决问题
它应该是这样的
public int Testfunction(TESTENUM TestEnum)
{
...
Run Code Online (Sandbox Code Playgroud)
返回类型不能声明为常量
| 归档时间: |
|
| 查看次数: |
10472 次 |
| 最近记录: |