加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Ref参数不归类为变量 – 更好的解决方法吗?

发布时间:2020-12-15 23:59:19 所属栏目:百科 来源:网络整理
导读:我有这段代码是从VB.NET转换而来的. private static void PrivateExecuteNonQuery(ref Providers enumProvider,ref string statement,ref CommandType commandType,ref ArrayList paramCollection,ref IDbConnection conn,ref Int16 CommandTimeout) { Execu
我有这段代码是从VB.NET转换而来的.

private static void PrivateExecuteNonQuery(ref Providers enumProvider,ref string statement,ref CommandType commandType,ref ArrayList paramCollection,ref IDbConnection conn,ref Int16 CommandTimeout)
    {
        ExecuteSqlServerNonQuery(ref statement,ref commandType,ref paramCollection,ref (SqlConnection)conn,ref CommandTimeout);
    }

我收到一个错误,因为它说ref(SqlConnection)conn不是变量的形式,所以我猜你不能传递ref的方法参数?

所以这对我来说似乎是一个hacky解决方案:

private static void PrivateExecuteNonQuery(ref Providers enumProvider,ref Int16 CommandTimeout)
    {
        SqlConnection sqlConnection = (SqlConnection)conn;

    ExecuteSqlServerNonQuery(ref statement,ref sqlConnection,ref CommandTimeout);
    }

有谁知道更好的方法来满足这个参考或使这个更清洁?

解决方法

ref的目的是实际允许该方法修改调用者传入的变量的内容.如果你有偶然的ref参数,由于从不加区别地使用ByRef的Visual Basic代码转换,那么你最终会遇到这种情况.

你有两个选择:

>在调用者和被调用者中删除不必要的ref参数限定符,或者
>如果必须,使用实变量,虚拟变量作为方法的参数

所以,答案是,不,没有更好的方法去做而不去除不必要的ref参数限定符.

什么是不必要的ref参数限定符?它是一个参数,它永远不会在方法体中的任何位置实际分配.大多数参数不需要参考,而那些参数通常在检查方法逻辑时非常明显.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读