C#的许多方面与Java相似。下面简述类成员的的初始化及delegate的使用。
C#中函数不能出现在类外,仅有如enum、delegate定义可以在类外。
static类:内部定义static字段和static方法,编译器会自动初始化。如:
public static class StaticClass { public static int _num; public static string _str; public static void Print(string str ) {Console.WriteLine("You are pretty!");} }
//_num、_str均被初始化,分别为0、“”
普通类:内部定义的字段均会被编译器自动初始化。而方法中的局部变量不会被初始化,需要用户赋值
public class NormalClass { public void Fun(){int i;} }
//编译会报错,由于局部变量未被赋值
static类的调用不需要初始化,而是可以直接调用该类中的字段。但普通类中的字段调用需要先初始化。
static类中的字段和方法均为static形式,不可以有其他。
delegate委托
委托可以很方便的用在线程的调用方面。委托的形式可以任意选择,基本形式如下:
public delegate void Fun(string str);
类中的方法也需要与delegate形式相同,那么该方法就可以被委托了。
public class Del { public static int numStatic; public int numDynamic; public Del() { } public void print(string str) { int n; Console.WriteLine("What a pretty girl you are, {0}!", str); if (!n.Equals(0)) Console.WriteLine("Method variable is not 0"); } } Del del = new Del(); Fun fun = new Fun(del.print); fun("Huang Qi");
//得到结果为What a pretty girl you are, Huang Qi!