有任何简洁的解释吗?
解决方法
对于来电者:
>对于ref参数,必须已经明确赋值变量
>对于out参数,变量不必明确赋值,但在方法返回后
对于方法:
> ref参数从明确分配开始,您不必为其分配任何值
> out参数不会从明确分配开始,并且您必须确保无论何时返回(没有例外)它都将被明确分配
所以:
int x; Foo(ref x); // Invalid: x isn't definitely assigned Bar(out x); // Valid even though x isn't definitely assigned Console.WriteLine(x); // Valid - x is Now definitely assigned ... public void Foo(ref int y) { Console.WriteLine(y); // Valid // No need to assign value to y } public void Bar(out int y) { Console.WriteLine(y); // Invalid: y isn't definitely assigned if (someCondition) { // Invalid - must assign value to y before returning return; } else if (someOtherCondition) { // Valid - don't need to assign value to y if we're throwing throw new Exception(); } else { y = 10; // Valid - we can return once we've definitely assigned to y return; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。