Java与C#开发上的一些差异与转换方法

Java和C#访问修饰符的差异性与转换:

在C#中,我们通常会使用到如下几种访问修饰符:

public 访问不受限制。

protected 访问仅限于包含类或从包含类派生的类型。

internal 访问仅限于当前程序集。

protected internal 访问仅限于当前程序集或从包含类派生的类型。

private 访问仅限于包含类型。


而在Java里,则仅有以下几种可供调配:

public  同C#一致

protected 同C#一致

private 同C#一致


internal 在Java中无等价存在(在Java中,如果不为函数或类增加任何修饰符,则意味着仅限当前包中所有类访问,同internal作用有近似处,但范围没有internal大。而在C#中,不用任何范围修饰符时,默认的则是protected,不能在类外被访问)

另外C#的Type,基本等价于Java的Class,小弟在LGame的C#版中也提供有一些转化工具(此类工具都在命名空间Org.Loon.Framework.Xna.Java下)。

Java和C#中this关键字的差异性与转换:


Java同C#的this关键字基础作用一致,都是引用当前类的当前实例,但细节使用处有些差异。

比如在Java中,我们想利用this调用一个已有的构造函数,使用样式如下:

public test{
   this(0,0);
}

public test(int x,int y){

}


而在C#里,则需要如下的使用方式:

public test : this(0,0){

}

public test(int x,int y){

}


而从派生类中访问基类的成员,也就是调用父类的方法,则有如下分别。

Java中

public test(){
   super(0,0);
}

C#中

public test():base(0,0){

}


Java和C#数组的差异性与转换:


Java与C#数组的差异,主要体现在多维数组的定义方式上(一维毫无差异)。

比如我们在Java中定义一个3x3的二维数组,需要如下设定。

int[][] test = new int[3][3];


读取方式则为如下:

int v = test[0][0]


而同样的设定,C#中则必须写成

int[,] test = new int[3,3];


读取方式就要顺应格式,变成这样(附带一提,小弟在LGame的C#版里提供有仿写Java数组的方式):

int v = test[0,0];


另外,C#数组设定上比较严谨,没有Java那么随意。

比如Java中构建如下样式数组,不会有任何问题:

String test[] = new String[3];


而在C#中则必须为如下样式:

string[] test = new string[3];


假如将[]写在变量名而非变量类型后,C#是不认的,连编译都过不去。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pfsfz.html