[英]How to reduce this code using anonymous methods or anonymous types?
我有一个Web服务和一些方法,并且我不想在下面使用此代码,该代码工作正常,因为我打算在静态(我已阅读)不是线程安全的多线程应用程序中使用此代码。
因此,我现在要做的只是重复以下静态方法“ returnisTrue()”中位于我的Web服务方法“ myWebMethod”主体中的代码,在// 1的第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;
}
您在静态方法中实际上在做什么? 您要修改任何全局状态还是仅在局部变量上工作? 只要采取适当的措施以确保其中的代码实际上是线程安全的,使用静态方法甚至变量都没有问题。
静态方法和实例方法都可能不安全,具体取决于您在其中执行的操作。 要问的主要问题是,您是否正在访问方法中多个线程之间可访问的任何数据? 如果是这样,为什么不将您的方法更改为线程安全的(例如通过锁定)。
以.NET框架为例,该框架始终包含各种静态线程安全方法。
编辑:
好的,现在我们已经看到了您的方法-它确实已经是线程安全的。 该方法不访问任何共享数据,并且字符串是不可变的,因此具有固有的线程安全性 。
如果lock
关键部分,则应该能够使用静态方法(您可能希望在msdn-> http://msdn.microsoft.com/zh-cn/library/c5kehkcz.aspx上查找它)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.