生成下列结果:
<gulp> God bless America.
Bloody foreigners
6.2 委托是否就和只有一个方法的接口一样? 从原理上来说,委托可以和“单方法接口”一样地使用。这两者之间最主要的区别就在于:对于接口来说,方法的名称是固定的;而对于委托来说,就只有签名是固定的,而方法名称则可以变化,正如上面的范例所显示的那样。
6.3 C#中与QueryInterface函数等价的是什么? as关键字。例如:
using System;
interface IPerson
{
string GetName();
}
interface IPerson2 : IPerson
{
int GetAge();
}
class CPerson : IPerson
{
public CPerson( string name )
{
m_name = name;
}
// IPerson
public string GetName()
{
return m_name;
}
private string m_name;
}
class CPerson2 : IPerson2
{
public CPerson2( string name, int age )
{
m_name = name;
m_age = age;
}
// IPerson2
public string GetName() { return m_name; }
public int GetAge() { return m_age; }
private string m_name; private int m_age;
}
public class CApp
{
public static void Main()
{
CPerson bob = new CPerson( "Bob" );
CPerson2 sheila = new CPerson2( "Sheila", 24 );
DisplayAge( bob );
DisplayAge( sheila );
}
static void DisplayAge( IPerson person )
{
IPerson2 person2 = person as IPerson2; // QueryInterface lives on !!!
if( person2 != null )
Console.WriteLine( "{0} is {1} years old.", person2.GetName(), person2.GetAge() );
else
Console.WriteLine( "Sorry, don''t know {0}''s age.", person.GetName() );
}
}
上