假设我有代码段C#:继承@代表
namespace Test
{
public delegate void StaticticsDelegate(object sender,EventArgs e);
class DynamicDelegates
{
static void Main()
{
StaticticsDelegate del = BowlerStatistics;
BallThrownEventArgs be = new BallThrownEventArgs(90, 145);
del(DynamicDelegates.Main,be);
del = BatsmanStatistics;
RunsScoredEventArgs re = new RunsScoredEventArgs("Skeet", 55);
del(DynamicDelegates.Main, re);
Console.ReadLine();
}
static void BowlerStatistics(object sender, BallThrownEventArgs e)
{
Console.WriteLine
("{0} sender is ; Bowler Statistics :speed {1} angle {2}",
sender, e.Speed, e.Angle);
}
static void BatsmanStatistics(object sender, RunsScoredEventArgs e)
{
Console.WriteLine
("{0} sender is ; Batsman Statistics :name {1} runs {2}",
sender, e.PlayerName, e.Runs);
}
}
class BallThrownEventArgs:EventArgs
{
int angle;
int speed;
public BallThrownEventArgs(int angle, int speed)
{
this.angle = angle;
this.speed = speed;
}
public int Angle
{
get { return angle; }
}
public int Speed
{
get { return speed; }
}
}
class RunsScoredEventArgs : EventArgs
{
string playerName;
int runs;
public RunsScoredEventArgs(string playerName, int runs)
{
this.playerName = playerName;
this.runs = runs;
}
public string PlayerName
{
get { return playerName; }
}
public int Runs
{
get { return runs; }
}
}
}
1)由于 “BallThrownEventArgs” 和 “RunsScoredEventsArgs” 从 “EventArgs的”,为什么 做了错误“没有重载匹配衍生... “当我执行”Main()“时生成 。
2)“ContraVariance”和“Covariance”是什么意思(请给我一个例子来理解)?
3)术语“逆变”和“协方差”仅与代表有关?
约CO /逆变相关问题: –
Konamiman
2009-11-18 08:00:01