天下

记录修行的印记

C#委派Delegate

1:
//直接上MSDN上的C#代码:
using System;
public class SamplesDelegate
{

    
// Declares a delegate for a method that takes in an int and returns a String.
    public delegate String myMethodDelegate(int myInt);

    
// Defines some methods to which the delegate can point.
    public class mySampleClass
    {

        
// Defines an instance method.
        public String myStringMethod(int myInt)
        {
            
if (myInt > 0)
                
return ("positive");
            
if (myInt < 0)
                
return ("negative");
            
return ("zero");
        }

        
// Defines a static method.
        public static String mySignMethod(int myInt)
        {
            
if (myInt > 0)
                
return ("+");
            
if (myInt < 0)
                
return ("-");
            
return ("");
        }
    }

    
public static void Main()
    {

        
// Creates one delegate for each method. For the instance method, an
        
// instance (mySC) must be supplied. For the static method, use the
        
// class name.
        mySampleClass mySC = new mySampleClass();
        myMethodDelegate myD1 
= new myMethodDelegate(mySC.myStringMethod);
        myMethodDelegate myD2 
= new myMethodDelegate(mySampleClass.mySignMethod);

        
// Invokes the delegates.
        Console.WriteLine("{0} is {1}; use the sign \"{2}\"."5, myD1(5), myD2(5));
        Console.WriteLine(
"{0} is {1}; use the sign \"{2}\"."-3, myD1(-3), myD2(-3));
        Console.WriteLine(
"{0} is {1}; use the sign \"{2}\"."0, myD1(0), myD2(0));
    }

}


2:
// d11.cpp : Defines the entry point for the console application.
//C++代码

#include 
"stdafx.h"
#include 
<iostream>
#include 
<string>

using namespace std;

typedef 
string myMethodDelegate(int myInt);

string myStringMethod ( int myInt )  {
    
if ( myInt > 0 )
        
return string"positive" );
    
if ( myInt < 0 )
        
return string"negative" );
    
return string"zero" );
}

string mySignMethod ( int myInt )  {
    
if ( myInt > 0 )
        
return string"+" );
    
if ( myInt < 0 )
        
return string"-" );
    
return  string"" );
}

int _tmain(int argc, _TCHAR* argv[])
{
    myMethodDelegate
* myD1 = myStringMethod;
    myMethodDelegate
* myD2 = mySignMethod;

    
// Invokes the delegates.
    printf( "{%d} is {%s}; use the sign \"{%s}\". \r\n"5, myD1( 5 ).c_str(), myD2( 5 ).c_str() );
    printf( 
"{%d} is {%s}; use the sign \"{%s}\". \r\n"-3, myD1( -3 ).c_str(), myD2( -3 ).c_str() );
    printf( 
"{%d} is {%s}; use the sign \"{%s}\".\r\n"0, myD1( 0 ).c_str(), myD2( 0 ).c_str() );
    
return 0;
}







posted on 2012-06-07 16:41 天下 阅读(392) 评论(0)  编辑 收藏 引用 所属分类: C#


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(4)

随笔分类(378)

随笔档案(329)

链接

最新随笔

搜索

最新评论