函数返回一个const值

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)
  1. 函数的返回类型究竟如何?(我使用对象返回类型,这不会抛出任何错误)

  2. 有没有其他选择来实现相同的目标?

Eri*_*ert 24

这里发生的是编译器认为您正在尝试声明一个名为Testfunction的公共常量整数字段,并且发现没有= 123;跟随标识符时非常惊讶.它告诉你它期望初始化器.

C#编译器中有许多地方,开发团队预计C和C++用户会错误地使用通用的C/C++语法.例如,有一个特殊的错误消息int x[];,指出你可能意味着int[] x;.这是另一个地方的示例,其中编译器可以从检测常见错误的特殊用途错误消息中受益,并描述如何修复它.如果您认为该功能很好,可以考虑请求该功能.

更一般地说,C#中的"const"意味着与C或C++中的意思不同.C#不具有不改变状态的"const函数"的概念,或者提供可提供潜在可变数据的只读视图的"const引用".在C#中,"const"仅用于声明字段(或本地)将被视为编译时常量.(并且"readonly"用于声明一个字段只能在构造函数中写入,这也非常有用.)

  • +1编译器认为,好的答案. (3认同)

Paw*_*iya 5

从函数返回类型中删除"const"关键字应该可以解决问题

它应该是这样的

public int Testfunction(TESTENUM TestEnum)
{
    ...
Run Code Online (Sandbox Code Playgroud)

返回类型不能声明为常量