无意中没有声明过载。你怎么看?

时间:2014-04-10 11:21:07

标签: c# visual-studio-2013

我有一个功能:

ViewModel GetviewModel(ViewModel viewModel)
{
    viewModel.Whatever = "something";
    return viewModel
}

我在我的控制器中不知不觉地这样称它并没有抱怨我没有将返回的模型传递给变量(因为显然它不参考引用)。

GetviewModel(viewModel);
return viewModel;

有没有办法通过声明“是的,你确实可以使用GetviewModel函数作为void类型来帮助其他开发人员”......类似于:

ViewModel, void GetviewModel(ViewModel viewModel)
{
    viewModel.Whatever = "something";
    return viewModel
}

显然以上情况不起作用:)

我不想再次使用相同的内容声明整个重载函数。

3 个答案:

答案 0 :(得分:2)

C#不允许仅使用更改的返回值重载方法。试想一下它对var关键字的作用。您应该做的是与代码的其他用户清楚地沟通它的作用。调用一个方法GetSomething,其参数为Something,实际上只是设置一个值应该被称为其他东西。您的示例应该被称为UpdateWhatever

总结:不,您不能仅对返回值创建方法重载。

答案 1 :(得分:0)

您应该调用函数'UpdateViewModel'并将返回值更改为void,这样其他人可以告诉它正在修改状态并且它不需要返回值。

答案 2 :(得分:0)

我不确定你的问题究竟是什么。这听起来像是在问你如何让其他人知道你的方法不需要为变量赋值。这是给定的。任何返回值都可以使用或不使用。

你的第二个问题似乎是如何让人们知道你的方法通过反对byVal做了什么。在方法创建中也告诉了这一点。

我不确定我是否理解你的要求。