-3
例外をキャッチして別のメソッドに渡すが、取得しているが、引数 '1'は 'ref'キーワードと一緒に渡さなければならない、refまたはout引数は、代入変数とabc.AbendProgram(ref string、ref System.Exception)の最適オーバーロードメソッドが無効な引数を持っています。私が間違いを犯しているか分かりません。メソッドの引数が機能しない
private void OpenDatabases()
{
try
{
WinDSSS.connectionString =
ConfigurationManager.AppSettings["WinDSS_Connection"].Replace("%DrivePath%", DrivePath);
}
catch (Exception ex)
{
logger.AddEntry(TFSUtilities.Logger.EventType.Fatal,
"frmMain.OpenDatabases", "Exception", ref ex);
AbendProgram(ref "Open Database", ref ex);
}
}
private void AbendProgram(ref string theRoutine, ref Exception theException)
{
int errorNumber = -1;
string ErrorDesc = "Unknown Error";
if ((theException != null))
{
errorNumber = 9999;
ErrorDesc = theException.ToString();
if ((theException.InnerException != null))
{
ErrorDesc = ErrorDesc + Constants.vbCrLf +
theException.InnerException.Message;
}
}
System.Windows.Forms.MessageBox.Show("There was an error in RSCShell:" +
theRoutine + Constants.vbLf + Constants.vbLf + Constants.vbLf +
"Error " + errorNumber + " - " + ErrorDesc +
Constants.vbLf + Constants.vbLf + "Please contact SUPPORT to resolve this issue");
System.Environment.Exit(0);
}
文字列変数を作成し、これを "AbendProgram"メソッドに渡します。エラーメッセージは何が間違っているかを示しています。 refまたはout引数は、代入可能な変数でなければなりません。私はあなたが完全にメソッド定義からrefを削除することをお勧めしたい - あなたはそれを正しく使用していない。 –
パラメータはrefパラメータである必要はありません。とにかくメソッド内で値を変更することはありません。 –
@Dennis_Eが指摘するように、なぜあなたは 'ref'キーワードを全く使っていませんか? –