【发布时间】:2018-10-21 01:49:03
【问题描述】:
我想要一个线程本地的数组并想使用 ThreadLocal。但是如何给出数组的大小呢?
这是不可能的:
class Foo
{
ThreadLocal<int[]> bar;
public Foo()
{
bar = new ThreadLocal<int[10]>();
}
}
【问题讨论】:
标签: c# arrays thread-local
我想要一个线程本地的数组并想使用 ThreadLocal。但是如何给出数组的大小呢?
这是不可能的:
class Foo
{
ThreadLocal<int[]> bar;
public Foo()
{
bar = new ThreadLocal<int[10]>();
}
}
【问题讨论】:
标签: c# arrays thread-local
您可以使用带有Func<T>“valueFactory”的构造函数来创建它:
class Foo
{
ThreadLocal<int[]> bar;
public Foo()
{
bar = new ThreadLocal<int[]>(() => new int[10]);
}
}
【讨论】:
ThreadLocal 中的通用参数指定要执行的任务的返回值的类型。无需提供任何大小,只需从中返回一个数组:
bar = new ThreadLocal<int[]>(() => new int[10]);
这就像你有一个返回数组的普通方法一样:
int[] DoSomething()
{
return new[10] { ... };
}
【讨论】: