方明的专栏

潜心修炼内功

委托的简单例子

 委托是函数的封装,它代表一“类”函数。他们都符合一定的签名:拥有相同的参数列表、返回值类型。同时委托也可以看作是对函数的抽象,是函数的“类”。此时,委托是实例代表一个具体的函数。

现定义一个书类,其中定义了价格,随着季节的改变可能有不同的折扣,希望可以灵活替换折扣

 

public class Book
    
...{
        
public delegate double GetPrice(Book b);
        
private string name;

        
public string Name
        
...{
            
get ...return name; }
            
set ...{ name = value; }
        }

        
private double price;

        
public double Price
        
...{
            
get ...return price; }
            
set ...{ price = value; }
        }

        
    
    }

    
public class WinterRebate
    
...{
        
public static double Cal(Book b)
        
...{
            
return b.Price * 0.8;
        }

        
    }

    
public class SummerRebate
    
...{
        
public static double Cal(Book b)
        
...{
            
return b.Price * 0.9;
        }

    }

 

 static void Main(string[] args)
        
...{
            Book b 
= new Book();
            b.Price
=100;
            Book.GetPrice g;
            
if (Console.ReadLine() == "win")
            
...{
                g 
= new Book.GetPrice(WinterRebate.Cal);
            }

            
else
            
...{
                g 
= new Book.GetPrice(SummerRebate.Cal);
            }


            Console.WriteLine(g(b));
}

 

 

阅读更多
文章标签: string class
个人分类: .net相关 c#基础
想对作者说点什么? 我来说一句

asp.net 事件和委托 简单例子

2012年12月27日 72KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭