我有一個Web服務和一些方法,我不想使用下面的代碼,這工作正常,因爲我打算在靜態(我已閱讀)不是線程安全的多線程應用程序中使用它。如何使用匿名方法或匿名類型來減少此代碼?
因此,我現在所做的只是重複下面的靜態方法'returnisTrue()'中的代碼,在我的web服務方法「myWebMethod」的主體中,/// 1 of 3,//2的3,和//3 3.這工作正常,但導致代碼臃腫。有沒有更緊湊的方式,使用函數式編程或匿名方法,或者你可以使用哪些方法?
注意,當我嘗試在方法內部創建一個類時,編譯器會阻塞...這將解決我的問題。
正如我所說的代碼,我現在工作正常,但它臃腫,因爲我重複'靜態'方法'returnisTrue'三次。
謝謝。
編輯:在迴應一些關於使我的靜態方法線程安全的問題,我寧願不打擾,但爲了獲得解決方案的興趣,我包括下面。
所有這些代碼是在Web服務的服務器端
// I cannot unfortunately use this static method below--not thread safe
static private bool returnisTrue()
{
bool isTrue = false;
// do a bunch of stuff here
return isTrue;
}
public bool myWebMethod (string XYZ)
{
//public Class myClassReturnisTrue { … } //will not compile
bool isTrueOrNot1 = returnisTrue(); //1 of 3
/// more code here
bool isTrueOrNot2 = returnisTrue(); //2 of 3
///more code here
bool isTrueOrNot3 = returnisTrue(); //3 of 3
return isTrueOrNot1 && isTrueOrNot2 && isTrueOrNot3;
}
// here is the static method 'returnisTrue' it looks something like this:
static private bool returnIsTrue(string A, string B)
{
if (A.Length() < B.Length())
{
return true;
}
else
return false;
}
爲什麼不重構'returnisTrue'是線程安全的? – Richard
沒有足夠的信息 - 沒有任何看起來像可能的lambda或匿名類型 - 來解決標題中的問題。 – Richard
@ Richard - 謝謝你的回覆。我認爲鎖具有性能成本 - 每秒會有數千次這種靜態方法被評估。從J. Kommer看來靜態方法是線程安全的。奇怪的是C#沒有簡單的內聯來解決這個問題。哦,這次我很幸運。 – PaulDecember