c# - 通过索引从 List 获取元素是否线程安全

标签 c#

通过索引从列表中获取元素是线程安全的吗?

var list = new List<int>();
...
var a = list[i]; //executed from multiple threads. Should this be protected?

最佳答案

它绝对是线程安全的... ...只要您能确保列表不被更改。即使添加项目也会让您进入“未定义”的领域(尽管根据实现它可能会起作用)。

所以,只读 - 是的。读取+操作:否。

注意:只要 list[5] 是同一个对象,就可以更改 lsit 中的项目。该列表并不关心。并不是说它会起作用 - 因为根据您在此处要更改的内容,这将是您与列表中的对象的契约(Contract)。对于整数,你显然不应该更新它们。

关于c# - 通过索引从 List 获取元素是否线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814154/

相关文章:

c# - 无法确定条件表达式的类型,因为 'string' 和 'System.DBNull' 之间没有隐式转换

c# - 在 C# 中将 CodeElements 编码到 IntPtr

c# - 空合并运算符赋值给自己

c# - 跨方法调用保留局部变量

c# - 如何使用多个表创建 Spotfire 数据源

c# - 设置构建顺序而不使用项目引用

c# - 将数据绑定(bind)到gridview

c# - 与嵌套 JSON 对象的模型绑定(bind)

c# - 你可以在 C# 中将函数分配给变量吗?

c# - 垃圾收集器不清理哪些对象?