请考虑以下代码:
public static int ToInt (this string str)
{
return Convert.ToInt32 (str);
}
我应该使用lock
作为此声明吗?
编辑1)
public static int ToInt(this string str)
{
int Id = -1;
if (str.IsEmpty() == true ||
int.TryParse(str.Trim().Replace(",", ""), out Id) == false)
{
throw new Exception("Invalid Parameter: " + str);
}
else
{
return Id;
}
}
这个方法也是线程吗?
答案 0 :(得分:6)
不,不需要锁定。
string
是不可变的;因此,当您尝试解析它时,另一个线程无法更改其内容。
它与扩展方法没有任何关系;根据他们的工作(或他们采取的参数),这些可能是也可能不是线程安全的。
除了;除非lock
在代码的其他地方得到尊重;这样做不会改变任何东西......(同样,至少对于这种方法而言)