相关疑难解决方法(0)

Thread和ThreadStart

以下两行都相同.但是有什么隐藏的区别吗?应该首选哪一个?

Thread t1 = new Thread(aMethod);

Thread t2 = new Thread(new ThreadStart(aMethod));
Run Code Online (Sandbox Code Playgroud)

谢谢.

.net c# multithreading

26
推荐指数
2
解决办法
4771
查看次数

隐式和显式委托创建之间的区别(有和没有泛型)

请参阅下面的Go()方法中的四行:

delegate void Action<T>(T arg);
delegate void Action();

void DoSomething<T>(Action<T> action)
{
    //...
}

void DoSomething(Action action)
{
    //...
}

void MyAction<T>(T arg)
{
    //...
}

void MyAction()
{
    //...
}

void Go<T>()
{
    DoSomething<T>(MyAction<T>); // throws compiler error - why?
    DoSomething(new Action<T>(MyAction<T>)); // no problems here
    DoSomething(MyAction); // what's the difference between this...
    DoSomething(new Action(MyAction)); // ... and this?
}
Run Code Online (Sandbox Code Playgroud)

请注意,第一次调用生成的编译器错误是: 方法"Action(T)"的类型参数无法从用法中推断出来.尝试显式指定类型参数.

.net c# generics delegates .net-2.0

5
推荐指数
1
解决办法
4748
查看次数

新的Thread(void Target())和新的Thread(新的ThreadStart(void Target()))有什么区别?

很抱歉,如果之前已经询问过这个问题,但我想简单回答以下两种用法之间的差异.VS似乎接受它们作为有效代码.

private static void doSomeWork()
{
   //do some work
}

public someClass()
{
   //Thread thread = new Thread(doSomeWork);
   //or
   //Thread thread = new Thread(new ThreadStart(doSomeWork));
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading

4
推荐指数
1
解决办法
830
查看次数

代表方差规则的怪异示例

在埃里克·利珀特(Eric Lippert)的博客文章中,简短地介绍了协方差和逆方差或方差,以及在《Cut in Nutshell》之类的书中指出:

如果要定义通用委托类型,则好的做法是:

  • 将仅在返回值上使用的类型参数标记为协变(out)。
  • 将仅在参数上使用的所有类型参数标记为反(in)。

这样做可以通过尊重类型之间的继承关系来使转换自然地工作。

因此,我正在对此进行试验,并且找到了一个相当奇怪的示例。

使用此类的层次结构:

class Animal { }

class Mamal : Animal { }
class Reptile : Animal { }

class Dog : Mamal { }
class Hog : Mamal { }

class Snake : Reptile { }
class Turtle : Reptile { }
Run Code Online (Sandbox Code Playgroud)

在尝试使用方法组到委托的转换和委托到委托的转换时,我编写了以下代码片段:

 // Intellisense is complaining here  
 Func<Dog, Reptile> func1 = (Mamal d) => new Reptile();

 // A local method that has the same return type and same parameter …
Run Code Online (Sandbox Code Playgroud)

c# delegates covariance contravariance

2
推荐指数
1
解决办法
222
查看次数