分类: C/C++
2008-05-28 16:08:08
C++程序员在学习C#时需要注意的一些问题(一) 1)使用接口(interface) interface ICar//接口ICar void Run();//接口方法 class MyCar : ICar //继承接口 public int Speed set public void Run() public void Stop() 2)使用数组 int[] array = new int[10]; // single-dimensional array of int int[ ,] array2 = new int[5,10]; // 2-dimensional array of int int[ , , ] array3 = new int[5,10,5]; // 3-dimensional array of int int[][] arrayOfarray = new int[2]; // array of array of int 3)使用索引(indexer) class IndexTest public IndexTest() public int this[int index] 4)一般参数传递 class PassArg public void byref(ref int x)//By-Ref public void byout(out int x)//Out 5)传递数组参数 class ArrayPass 6)is 和 as class IsAs 7)foreach 8)virtual and override class BaseClass class Son : BaseClass class GrandSon : BaseClass 9)使用关键字new隐藏父类的函数实现 class Shape class Rectangle : Shape 10)调用父类中的函数 class Father class Child : Father
在c#中,使用关键字interface来定义接口;而且,在c#中不能使用多重继承。
{
int Speed//属性Speed
{
get;
set;
}
void Stop();
}
{
int _speed;
{
get
{
return _speed;
}
{
_speed = value;
}
}
{
System.Console.WriteLine("MyCar run, at speed {0}", _speed);
}
{
System.Console.WriteLine("MyCar stop.");
}
}
c#中的数组在堆中分配,因此是引用类型。c#支持3中类型的数组:一维数组(single dimensional),多维数组(multi dimensional)和数组的数组(array of array)。
for (int i = 0; i < array.Length; i++)
array[i] = i;
array2[1,2] = 5;
array3[0,2,4] = 9;
arrayOfarray[0] = new int[4];
arrayOfarray[0] = new int[] {1,2,15};
索引使得可以像访问数组一样来访问类数据。
{
private int[] _a;
{
_a = new int[10];
}
{
get
{
return _a[index];
}
set
{
_a[index] = value;
}
}
}
{
public void byvalue(int x)//By-Value
{
x = 777;
}
{
x = 888;
}
{
x = 999;
}
}
使用params关键字来传递数组参数。
{
public void Func(params int[] array)
{
Console.WriteLine("number of elements {0}", array.Length);
}
}
obj is class用于检查对象obj是否是属于类class的对象或者convertable。
obj as class用于检查对象obj是否是属于类class的对象或者convertable,如果是则做转换操作,将obj转换为class类型。
{
public void work(object obj)
{
if(obj is MyCar)
{
System.Console.WriteLine("obj is MyCar object");
ICar ic = obj as ICar;
ic.Speed = 999;
ic.Run();
ic.Stop();
}
else
{
System.Console.WriteLine("obj is not MyCar object");
}
}
}
int []arr = new int[10];
foreach(int i in arr)
Console.WriteLine("{0}", i);
子类重载父类虚函数,需要使用override关键字。
{
public virtual void Speak()
{
System.Console.WriteLine("Hello, BaseClass.");
}
}
{
public override void Speak()
{
System.Console.WriteLine("Hello, Son.");
}
}
{
public override void Speak()
{
System.Console.WriteLine("Hello, GrandSon.");
}
}
{
public virtual void Draw()
{
Console.WriteLine("Shape.Draw") ;
}
}
{
public new void Draw()
{
Console.WriteLine("Rectangle.Draw");
}
}
class Square : Rectangle
{
public new void Draw()
{
Console.WriteLine("Square.Draw");
}
}
使用关键字base来调用父类中的函数。
{
public void Hello()
{
System.Console.WriteLine("Hello!");
}
}
{
public new void Hello()
{
base.Hello();
}
}