我有一个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