Java Runnable的C#版本? (代表?)

时间:2011-08-16 13:12:51

标签: c# delegates first-class-functions

我在SO中找不到这个问题的直接答案。是否有void (void)签名的预定义委托?

3 个答案:

答案 0 :(得分:4)

Action有您正在寻找的签名。但是,它并不意味着与Runnable相同:Runnable通常表示run()方法旨在在Thread上运行,而Action没有指示。为此你需要ThreadStart,它具有相同的签名,并且确实做出了指示。

如果你需要的只是一个没有参数的代表,Action就是你想要的。如果您正在处理线程并需要指示start方法,请使用ThreadStart

答案 1 :(得分:1)

不。 C#以不同于Java的方式处理线程。在Java中,Runnable接口是继承Thread的替代方法,但您仍然需要创建一个新的Thread对象,将Runnable传递给构造函数。

您只需创建一个新的Thread对象并将其传递给System.Threading.Thread委托(这是您完成工作的功能),而不是继承ThreadStart类。 ThreadStart是与Java的Runnable相当的C#。

但是,Action代表拥有您所说的void个参数。

答案 2 :(得分:1)

Action委托是一个没有参数的void。

http://msdn.microsoft.com/en-us/library/system.action.aspx

还有其他签名,最多包含16个参数。