这是我的方法:
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?
谢谢
答案 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)
虽然你所写的内容有效,但我认为你的方法在做什么并不是特别明显。
自从我第一次开始编码以来,事情已经发生了一些变化,但我相信现在优先考虑让你的代码首先对人类可读,然后如果你真的需要做一些意想不到的事情那么就要对它进行评论。
考虑到这一点,我会调整你的代码以提供一个属性来获取计数并修改方法,这样你就不需要参数了。
我知道这不会回答你问题的“使用方法并忽略返回类型”部分,但我认为这对你当时正在做的事情是主观的。