歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java與C#開發上的一些差異與轉換方法

Java與C#開發上的一些差異與轉換方法

日期:2017/3/1 10:15:39   编辑:Linux編程
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#是不認的,連編譯都過不去。
Copyright © Linux教程網 All Rights Reserved