最有可能的工作代码:
public static class TestClass
{
public const int constValue1 = 1;
public const int constValue2 = 2;
public const int constValue3 = 3;
}
enum TestEnum
{
testVal1, testVal2, testVal3
}
public int TestFunction(TestEnum testEnum)
{
switch (testEnum)
{
case TestEnum.testVal1:
return TestClass.constValue1;
case TestEnum.testVal2:
return TestClass.constValue2;
case TestEnum.testVal3:
return TestClass.constValue3;
}
return 0; // all code paths have to return a value
}
首先,根据const (C# Reference):
const关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,这意味着它不能被修改。
在 C# 中,const
仅用作字段(如TestClass.constValue1
)或局部变量的修饰符,不适用于函数返回类型。
所以你来自伟大的 C/C++ 王国。考虑到我对 C/C++ 的知识非常有限,C/C++ 中的const
返回类型仅对指针有意义......
// C++ code
const int m = 1;
// It returns a pointer to a read-only memory
const int* a(){
return &m;
}
但除非您使用不安全的代码,否则C# 中没有指针。只有值类型(如int
// DateTime
/ TestEnum
structs)和引用类型(如string
/classes)。网上还有很多要读的。
就像int
C# 中的值类型一样,当您返回它时,它会被复制。因此,即使您返回“常量int
”,返回的值也不是常量,修改返回值也不会“更改常量并导致 SegFault”。
嗯,忘记回答你的问题了……
函数的返回类型究竟是怎样的?(我正在使用对象返回类型,这不会引发任何错误)
就像我在上面的代码中显示的那样,int
.
const int blah = 1
只声明一个blah
类型的变量/字段,int
不能修改它(通过做blah = 2
)。在 C#const int
中不是类型。
有没有其他选择可以实现相同的目标?
嗯...我想我实际上不需要回答这个...