不使用方法的返回值是一个好习惯吗?

时间:2012-05-22 07:36:39

标签: c#

这是我的方法:

   public static bool ValidateAddressCount(ref long o_addressCount)
    {
  // o_addressCount is modified here
  //return true or false
   }

当我不关心方法返回的内容时,我遇到了一些情况,我只需要o_adressCount 以下列方式使用此方法是一种好习惯:

  long addressCount =  0;
  ValidateAddressCount(ref addressCount); //without assigning the returned value to any variable
  //use address count

此外,任何人都可以解释为什么这在.net?

谢谢

7 个答案:

答案 0 :(得分:4)

它取决于开发者。没有严格的规则。

喜欢bool int.TryParse(string s, out int a){}

当我们传递要转换为int值的值时,它返回bool值并使用out变量发送转换后的值。

有时我们需要检查它是否已被转换。这就是我们使用返回值的地方。

string str = "1";
int a = 0;

if(int.TryParse(str, out a))
    MessageBox.Show("Converted");
else
    MessageBox.Show("Not Converted");

Tryparse可以简单地用作

bool b = int.TryParse(str, out a);

让我们说返回的bool值对我没用。那么为什么要通过创建变量(b)来浪费内存,为其赋值并且不使用它。所以我会把它写成

int.TryParse(str, out a);

答案 1 :(得分:3)

为什么它很有效:

long addressCount =  0;
ValidateAddressCount(ref addressCount);

的形式相同
long addressCount =  0;
true;

任何<expression> ;都是有效的声明。

这里有一个有效的问题:

  • 为什么没有这种语法的警告,这很可能是一个错误?

因为通常忽略返回值不是一个好习惯。

答案 2 :(得分:1)

这是因为您使用return-value声明了一个方法,这意味着可能想要关注return-value,但这不是强制性选项。

答案 3 :(得分:1)

当调用方法时,使用ref / out想要在传递的参数中更改被调用的方法。

否则,使用ref / out不是一个好的选择。

如果要从被调用的方法返回多个值,则应使用动态对象/元组。

答案 4 :(得分:0)

您不必使用方法的结果,只需调用它的副作用即可。但是,如果可以的话,通常最好避免使用ref。在您的情况下,您只需返回long?

答案 5 :(得分:0)

不,你不需要分配返回值..但在我看来,如果对象有效或无效,则validateSomething(object)方法应该有一个返回值,检查返回值是非常重要的。

如果该方法对该对象执行某些操作,则不应仅调用validateSomething(object),而应调用validateAndChangeSomething(object) ...现在,它正在混淆它正在做什么以及验证的主要输出是什么:返回值或修改后的对象..

答案 6 :(得分:0)

虽然你所写的内容有效,但我认为你的方法在做什么并不是特别明显。

自从我第一次开始编码以来,事情已经发生了一些变化,但我相信现在优先考虑让你的代码首先对人类可读,然后如果你真的需要做一些意想不到的事情那么就要对它进行评论。

考虑到这一点,我会调整你的代码以提供一个属性来获取计数并修改方法,这样你就不需要参数了。

我知道这不会回答你问题的“使用方法并忽略返回类型”部分,但我认为这对你当时正在做的事情是主观的。