private static List<WorkflowVariableDataSet> MergeDatasetsListBranch(out List<WorkflowVariableDataSet> datasetsList) { if(datasetsList == null) datasetsList=new List<WorkflowVariableDataSet>(); datasetsList=new List<WorkflowVariableDataSet>(); return datasetsList; }
Out parameter 'datasetsList' might not be initialized before accessing.
我知道在这一点上它应该是未初始化的,但是这个词可能表明这个错误在于可能的未初始化的对象访问(当它甚至不被访问时,它是引用,被检查). Ofc不会用ref关键字发生,但我很好奇参考检查如何违反out-parameters策略.
编辑
我已经编辑了这个问题和示例:out对象将在方法内部初始化.问题是:为什么未初始化对象不能为空比较?怎么不同于:
object o; if(o==null) ...
解决方法
Use of unassigned out parameter ‘parameter’ The compiler Could not
verify that theout
parameter was assigned a value before it was used;
its value may be undefined when assigned. Be sure to assign a value to
out parameters in the called method before accessing the value. If you
need to use the value of the variable passed in,use aref
parameter
instead.
所以把一个外部参数视为未分配的.你是负责任的人.
所以只要删除if:
datasetsList = new List<WorkflowVariableDataSet>();
如果要处理传递给此方法的列表,请使用ref intead(如上所述):
原文地址:https://www.jb51.cc/csharp/93192.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。