生成如下输出:
fred is not an integer
10 is an integer
5.2 可以在运行时获取类型的名称吗? 可以。使用
object类的GetType方法就可以获得该对象所属类型的名称。例如: using System;
class CTest
{
class CApp
{
public static void Main()
{
long i = 10;
CTest ctest = new CTest();
DisplayTypeInfo( ctest );
DisplayTypeInfo( i );
}
static void DisplayTypeInfo( object obj )
{
Console.WriteLine( "Type name = {0}, full type name = {1}", obj.GetType(), obj.GetType().FullName );
}
}
}
会生成下列输出:
Type name = CTest, full type name = CTest
Type name = Int64, full type name = System.Int64
6. 高级语言特性 6.1 什么是委托? 所谓委托(
delegate),是从System.Delegate类派生而来的一个类。但是,C#语言对委托的声明提供了特殊的语法,使得它们看起来并不像是类。一个委托表现了一个特定签名的方法,委托的一个实例则表现了特定对象(或类,如果方法是静态方法的话)中拥有特定签名的方法。例如: using System;
delegate void Stereotype();
class CAmerican
{
public void BePatriotic()
{
Console.WriteLine( " <gulp> God bless America.");
}
}
class CBrit
{
public void BeXenophobic()
{
Console.WriteLine( "Bloody foreigners " );
}
}
class CApplication
{
public static void RevealYourStereotype( Stereotype stereotypes )
{
foreach( Stereotype s in stereotypes )
s();
}
public static void Main()
{
CAmerican chuck = new CAmerican();
CBrit edward = new CBrit();
// Create our list of sterotypes.
Stereotype stereotypes = new Stereotype;
stereotypes[0] = new Stereotype( chuck.BePatriotic );
stereotypes = new Stereotype( edward.BeXenophobic );
// Reveal yourselves!
RevealYourStereotype(stereotypes );
}
}
会