c# - 为什么我不能在 out 参数中传递一个未分配的对象变量然后分配它

标签 c# out-parameters

在 C# 中,为什么我不能在 out 中传递未分配的对象变量?参数然后赋值?

如果我尝试这样做,会出现编译器错误:“无法在此范围内声明局部变量 <xyz>,因为它会给 <xyz> 赋予不同的含义 ...”

例如。

void MyMethod(int x, out MyObject mo) {  **MyObject** mo = new MyObject(); }
// in some other scope:
MyObject mo;
MyMethod(1, out mo);

编辑:我现在可以看到我的错误了。我已将上面的代码更改为我的代码。 MyObject星号不应该在那里。

最佳答案

你原来贴的代码是错误的,现在我们发现问题出在这里:

void MyMethod(int x, out MyObject mo)
{
    MyObject mo = new MyObject();
    // should be:
    // mo = new MyObject();
}

您正在创建一个新的局部变量 mo,它“隐藏”了参数 mo

很高兴我们最终到达了那里:-)

关于c# - 为什么我不能在 out 参数中传递一个未分配的对象变量然后分配它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455133/

相关文章:

c# - 如何使用 F# 处理来自 C# 的列表

c# - 将文本文件解析为字典

c# - 条件流中 out 参数的用法和 CA1002 fxcop 错误

.net - 如何实现与 Dictionary.TryGetValue 相同的行为

c# - 在 C# : Why Does Out Parameter Need to be Named As Well? 中混用和命名参数

c# - 将资源中的 WPF 几何图形添加到 GeometryGroup

c# - 将任务按完成顺序排序

c# - 如何在 Android 中使用 C# 生成的 RSA 公钥?

带有 OUT 参数的 Java MyBatis 存储过程调用

c# - C# 'out' 或 'ref' 参数的值何时实际返回给调用方?