您好我将代码从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以使其正常工作。
答案 0 :(得分:-1)
ref
。我不确定你从哪里得到它,但在你的情况下没有必要。
所以你最简单的解决办法就是删除它。
这意味着将其从此处删除:
chargeCredits( ref cxnDb);
以及您的chargeCredits
方法。我认为它类似于:
public void chargeCredits(ref SqlConnection cxnDB)
也从那里删除它。