请告诉我为什么 ParameterizedThreadStart 类只允许只有System.object参数类型包含的方法。
public class MainThreadTest
{
public static void Main(string[] args)
{
Thread T = new Thread(new ParameterizedThreadStart(DisplayYOrX));
T.Start("X");
DisplayYOrX("Y");
}
static void DisplayYOrX(object outValue)
{
string Parameter = (string)outValue;
for(int i=0; i<10; i++)
Console.Write(Parameter);
}
}
为什么我想知道这是我不想再使用类型转换语法。
string Parameter = (string)outValue;
答案 0 :(得分:15)
限制的原因是ThreadStart
不是通用委托,因此它只能传递object
。通过使用直接传递值的lambda,这很容易解决。
public static void Main(string[] args) {
ThreadStart start = () => {
DisplayYOrX("X");
};
Thread t = new Thread(start);
t.Start();
...
}
static void DisplayYOrX(string outValue) {
...
}
C#2.0版本
public static void Main(string[] args) {
ThreadStart start = delegate {
DisplayYOrX("X");
};
Thread t = new Thread(start);
t.Start();
...
}