C# 和.Net2.0实践平台、语言与框架中,
一个关于委托更改应用方法列表的例子,主要说明
+=添加的委托对象的多个方法引用,会被添加到目标委托对象引用列表的尾部,
-=删除的方法列表没有出现在目标委托对象引用列表就会操作失败
代码如下:
class Program
{
public delegate int Deleg(int i);
static void Main(string[] args)
{
Article a = new Article(100);
Article b = new Article(103);
Article c = new Article(107); Deleg deleg = a.IncPrice;
Deleg deleg1 = b.IncPrice;
deleg1 += c.IncPrice;
deleg += deleg1;
deleg(10); Console.WriteLine("a:{0} b:{0} c:{0}",a.m_Price,b.m_Price,c.m_Price); Deleg deleg2 = a.IncPrice;
deleg2 += c.IncPrice;
deleg -= deleg2;
deleg(10); Console.WriteLine("a:{0} b:{0} c:{0}",a.m_Price,b.m_Price,c.m_Price); Deleg deleg3 = a.IncPrice;
deleg3 += b.IncPrice;
deleg -= deleg3;
deleg(10); Console.WriteLine("a:{0} b:{0} c:{0}",a.m_Price,b.m_Price,c.m_Price);
}
} public class Article
{
public int m_Price = 0;
public Article(int price)
{
m_Price = price;
}
public int IncPrice(int i)
{
m_Price += i;
return m_Price;
}
}
本机运行结果:
a:110 b:110 c:110
a:120 b:120 c:120
a:120 b:120 c:120书上给出的结果是:
a:110 b:113 c:117
a:120 b:123 c:127
a:120 b:123 c:137
书中的解释正确吗?为何时间运行结果不一样呢?求高手解释。
一个关于委托更改应用方法列表的例子,主要说明
+=添加的委托对象的多个方法引用,会被添加到目标委托对象引用列表的尾部,
-=删除的方法列表没有出现在目标委托对象引用列表就会操作失败
代码如下:
class Program
{
public delegate int Deleg(int i);
static void Main(string[] args)
{
Article a = new Article(100);
Article b = new Article(103);
Article c = new Article(107); Deleg deleg = a.IncPrice;
Deleg deleg1 = b.IncPrice;
deleg1 += c.IncPrice;
deleg += deleg1;
deleg(10); Console.WriteLine("a:{0} b:{0} c:{0}",a.m_Price,b.m_Price,c.m_Price); Deleg deleg2 = a.IncPrice;
deleg2 += c.IncPrice;
deleg -= deleg2;
deleg(10); Console.WriteLine("a:{0} b:{0} c:{0}",a.m_Price,b.m_Price,c.m_Price); Deleg deleg3 = a.IncPrice;
deleg3 += b.IncPrice;
deleg -= deleg3;
deleg(10); Console.WriteLine("a:{0} b:{0} c:{0}",a.m_Price,b.m_Price,c.m_Price);
}
} public class Article
{
public int m_Price = 0;
public Article(int price)
{
m_Price = price;
}
public int IncPrice(int i)
{
m_Price += i;
return m_Price;
}
}
本机运行结果:
a:110 b:110 c:110
a:120 b:120 c:120
a:120 b:120 c:120书上给出的结果是:
a:110 b:113 c:117
a:120 b:123 c:127
a:120 b:123 c:137
书中的解释正确吗?为何时间运行结果不一样呢?求高手解释。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货