转换线程的扩展方法是否安全
Is extension method for convertion thread safe
请考虑此代码:
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;
}
}
此方法对线程安全吗?
不,不需要锁。
string
是不可变的;因此,当您尝试解析它时,另一个线程无法更改其内容。
它确实与扩展方法没有任何关系;根据它们的作用(或它们采用的参数),它们可能是也可能不是线程安全的。
此外;除非 lock
在代码的其他地方得到尊重;这样做不会改变任何东西......(同样,至少对于这种方法)
请考虑此代码:
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;
}
}
此方法对线程安全吗?
不,不需要锁。
string
是不可变的;因此,当您尝试解析它时,另一个线程无法更改其内容。
它确实与扩展方法没有任何关系;根据它们的作用(或它们采用的参数),它们可能是也可能不是线程安全的。
此外;除非 lock
在代码的其他地方得到尊重;这样做不会改变任何东西......(同样,至少对于这种方法)