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;解决方法 限制的原因是ThreadStart不是一个通用委托,因此它只能传递一个对象.这是很容易解决的,尽管通过使用一个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(); ...}总结
以上是内存溢出为你收集整理的c# – 为什么ParameterizedThreadStart只允许对象参数?全部内容,希望文章能够帮你解决c# – 为什么ParameterizedThreadStart只允许对象参数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)