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#是不認的,連編譯都過不去。