【发布时间】:2014-02-19 15:01:30
【问题描述】:
private void SaveMoney(string id...)
{
...
}
public void DoSthWithMoney(string action,string id...)
{
if(action=="save") return SaveMoney(string id);
...
}
为什么 C# 不允许我通过公共函数返回私有函数的 void?它甚至是相同的数据类型“void”...
或者 void 不是一种数据类型?
以下代码真的是最短的解决方法吗?
if(action=="save") {
SaveMoney(string id);
return;
}
【问题讨论】:
-
从字面上从来没有考虑过这个,如果你很懒,这是一个好主意:D
-
void 本身不是数据类型(void* 是另一回事)。如果函数返回 void 则意味着它不返回值(编译器不会采取步骤将任何值放入调用约定中指定的寄存器中)。所以你在这里尝试的是不正确的!!!
-
我看不出编译器不允许这样做的任何原因;编译器准确地知道这里发生了什么。似乎很少有人会尝试这样做。
-
@Mr.Smith 编译器可以知道——但这只是语言定义的问题。在声明为
void的函数中(不是返回void- 你不能返回void)你可能不是return一个值(如果你能够像上面那样写它,void将被视为一个值,但事实并非如此)。