判断一个变量的类型:例:float x;if(x is float) Console.WriteLine("x is a type of float");
c#中的out与ref;ref 就和c++中的引用&一样,而out定义说明该变量作为输出变量(所以在该函数体结束的时候必须给out定义的变量重新赋值),
static void Circle(out float x,out float y)
{
x=1;
y=2; //这里必须要给x,y都赋值,否则会报错。如果是ref则不需要。
}
Main函数中调用:float aa, bb;
Circle(out aa,out bb); //这里不管aa和bb是否有值,对Circle函数来说,结果相同(因为它会重赋值)。
Console.WriteLine(aa+ " + " +bb);
这样一来,out和ref区别:ref是传递参数的地址(就像c++里一样),out是返回值。使用ref前必须对变量赋值,out随便。
c#中的委托 delegate ;使用它可以时我们在调用函数时,函数的参数不仅局限于变量,还可以调用函数。例:
static int f(int i) { return 3 * i; }
static int g(int i) { return i * i; }
static void h(Fun f, Fun g, int x) //这样h函数就可以调用函数f和g了
{
Console.WriteLine("f(g({0})) = {1}", x, f(g(x)));
}
delegate int Fun(int x);
委托加减:通过委托可以用一个函数实现多个函数的功能。
static void Div(int x,int y)
{
Console.WriteLine("{0}/{1}={2}",x,y,x/y);
}
static void Mod(int x,int y)
{
Console.WriteLine("{0}%{1}={2}",x,y,x/y);
}
delegate int Fun(int x);
然后在Main函数里调用:
Fun f = Div;
f(10,2) ; //输出:10/2=5;
f = f+Mod; //这里不能写f = Div + Mod;
f(10,2); //输出10/2=5;10%2=0;
f=f-Mod;
f(10,2); //输出:10/2=5;