1

这是我的方法:

   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中有效?

谢谢

4

7 回答 7

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);

假设返回的布尔值对我没有用。那么为什么要通过创建一个变量(b)来浪费内存,给它一个值而不使用它。所以我会把它写成

int.TryParse(str, out a);
于 2012-05-22T07:38:23.673 回答
3

为什么它很容易:

long addressCount =  0;
ValidateAddressCount(ref addressCount);

long addressCount =  0;
true;

Any<expression> ;是一个有效的陈述。

这里有一个有效的问题:

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

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

于 2012-05-22T07:40:34.557 回答
1

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

于 2012-05-22T07:38:40.127 回答
1

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

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

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

于 2012-05-22T07:40:43.390 回答
0

您不必使用该方法的结果,您可以调用它以获得它的副作用。ref但是,如果可以的话,最好避免使用。在你的情况下,你可以 return long?

于 2012-05-22T07:42:55.553 回答
0

不,您不需要分配返回值..但在我看来,validateSomething(object)如果对象有效与否,方法应该有一个返回值,并且检查返回值应该很重要。

如果该方法对对象做了某些事情,它不应该被称为 just validateSomething(object),但是validateAndChangeSomething(object)......现在它正在混淆它正在做什么以及验证的主要输出是什么:返回值或修改后的对象..

于 2012-05-22T07:45:00.077 回答
0

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

自从我第一次开始编码以来,事情已经发生了一些变化,但我相信现在最好的做法是先让你的代码对人类可读,然后如果你真的不得不做一些意想不到的事情,那就把它注释掉。

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

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

于 2012-05-22T08:06:19.227 回答