有什么区别
private void DoSomething(int value) {
value++;
}
和
private int DoSomething(int value) {
return value++;
}
当用作其中之一时
DoSomething(value);
对比
value = DoSomething(value);
最佳答案
你在谈论按引用传递和按值传递之间的区别,这在概念上类似于值类型与引用类型的概念强>.
如果将值类型传递给方法,则必须使用第二个示例;否则你只是增加一个存在于 DoSomething() 范围内的整数。试一试:如果您执行第一个示例,在 DoSomething() 运行后,您的 int 值将保持不变。
但是,如果您传递的不是值类型(比如对象 foo),您实际上是在传递引用到原始对象。你在 DoSomething() 中对它做的任何事情也会在方法外生效,因为你仍然指的是同一个对象。
您可以通过编写以下内容来完成您在第一个示例中尝试的内容:
void DoSomething(ref int value)
这指示 .NET 传递对项目的引用,而不管它是否是值类型。
请参阅关于 Value Types vs Reference Types 的这篇文章 在 MSDN 上查看更详细的信息。
此外,作为 zodoz points out (适本地投票),通过返回 value++
你正在返回然后递增。要返回增加后的值,请使用 ++value
。
关于c# - 方法内修改方法参数或返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/555471/