'void'是函数的有效返回值吗?

时间:2014-01-28 10:46:33

标签: c# return void

private void SaveMoney(string id...)
{
    ...
}

public void DoSthWithMoney(string action,string id...)
{
    if(action=="save") return SaveMoney(string id);
    ...
}

为什么C#不允许我通过公共函数返回私有函数的空白?它甚至是相同的数据类型“void”...

或者数据类型是否无效?

以下代码是否真的是最短的解决方法?

if(action=="save") {
    SaveMoney(string id);
    return;
}

5 个答案:

答案 0 :(得分:6)

void不是C#中的类型。在这种情况下,void表示absence of a return type or value,因此您无法像第一个示例中那样使用return

这与C不同,例如,void可以表示typeless or an unknown type

答案 1 :(得分:5)

void 不是实际的返回(数据)类型! void没有结果。因此,即使您调用的方法也声明为void,您也无法在声明为void的方法中返回值。

我必须承认这将是一个很好的捷径,但事情并非如此: - )


还有一个想法:如果允许您想要的内容,void将成为数据类型也是该数据类型唯一可能的值,如return x;被定义为将值x返回给调用者。因此return void;会将值void返回给调用者 - 根据定义,这是不可能的。

例如,对于null,这是不同的,因为null是引用类型的有效值。

答案 2 :(得分:4)

这不是一种解决方法,它是正确的方法。

答案 3 :(得分:4)

即使这会编译我也不会推荐它。在这么小的方法中,很明显发生了什么,但如果它是一个更大的方法,下一个程序员会看到,眨眼,认为“我认为这是一个无效的方法”向上滚动,确认,向下滚动,按照SaveMoney方法,找出它什么都不返回等等。

您的“解决方法”一目了然。

答案 4 :(得分:1)

只需将方法更改为布尔值并返回0.