无法将'cxnDb'作为ref或out参数传递,因为它是'using variable'

时间:2013-10-01 15:54:06

标签: c# vb.net

您好我将代码从VB.NET转换为C#。我使用Developer Fusion进行了转换。我最初有很多错误,除了这个,我清除了所有这些错误。这是VB.net代码:

   If cxnDb.State = ConnectionState.Open Then

   If AppSettings("skipCredits") Is Nothing Then

   Console.WriteLine("CREDITS")

   chargeCredits(cxnDb)

   Console.WriteLine()

   End If 

这是我拥有的等效C#代码:

     if (cxnDb.State == ConnectionState.Open)
      {
     if (System.Configuration.ConfigurationManager.AppSettings["skipCredits"] == null)
      {
      Console.WriteLine("CREDITS");
      chargeCredits( ref cxnDb);
      Console.WriteLine();
      }

但是当我尝试构建我的解决方案时,我得到了:

无法将'cxnDb'作为ref或out参数传递,因为它是'使用变量'错误。

如果我删除chargeCredits(cxnDb);的ref关键字,我必须使用ref关键字传递它。

有人可以帮助我吗?

更新 我的C#chargeCredits方法实现如下:

     private static void chargeCredits( SqlConnection cxnFinanceDb)
    {
        using (SqlCommand cmdCredits = cxnDb.CreateCommand())
        {
            cmdCredits.CommandType = CommandType.StoredProcedure;
            cmdCredits.CommandText = "bill_Credits";
            cmdCredits.CommandTimeout = 60;

            try
            {
                cmdCredits.ExecuteNonQuery();
            }
            catch (SqlException exDetail)
            {
                Console.WriteLine(" + cmdCredits.SqlException :: " + exDetail.Message);
            }
            catch (Exception exDetail)
            {
                Console.WriteLine(" + cmdCredits.Exception :: " + exDetail.Message);
            }
            finally
            {
                cmdCredits.Dispose();
            }
        }
         }

在这里,我删除了我的方法中的ref以使其正常工作。

1 个答案:

答案 0 :(得分:-1)

这里不需要

ref。我不确定你从哪里得到它,但在你的情况下没有必要。

所以你最简单的解决办法就是删除它。

这意味着将其从此处删除:

chargeCredits( ref cxnDb);

以及您的chargeCredits方法。我认为它类似于:

public void chargeCredits(ref SqlConnection cxnDB)

也从那里删除它。