gpt4 book ai didi

c# - String 类中的线程安全

转载 作者:IT王子 更新时间:2023-10-29 04:52:52 27 4
gpt4 key购买 nike

像下面的方法一样,使用 String 类从局部变量构建字符串是否线程安全?假设从多个线程调用以下方法。

public static string WriteResult(int value, string name)
{
return string.Format("Result: value={0} name={1}", value, name);
}

public static string WriteResult2(int value, string name)
{
return "Result: value=" + value + " name=" + name;
}

还是需要使用StringBuilder来保证线程安全?

最佳答案

那绝对没问题。除了字符串文字之外,任何一段代码都没有共享状态。由于字符串是不可变的,因此可以在线程之间自由共享字符串,并且 string.Formatstring.Concat (在第二段代码中隐式调用)是线程安全的。

即使其中一个参数是可变的,即使方法改变了参数,例如

public static void AddResult(int value, List<string> results)
{
results.Add("Value " + value);
}

...那么方法本身仍然是线程安全的,只要多个线程不引用相同的List<string>即可。 .如果多个线程确实引用相同的List<string>那么即使它只是从列表中读取也是不安全的,因为另一个线程可能会改变它。

关于c# - String 类中的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30120698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com