|
Java 8 |
C# 6 |
Swift |
變數 |
類型 變數名; |
類型 變數名; |
var 變數名 : 類型; |
變數(類型推斷) |
N/A |
var 變數名=初值; |
var 變數名=初值; |
常量 |
final 類型 常量名=初值; |
readonly 類型 常量名=初值; |
let 常量名 : 類型=初值; |
基本類型 |
int short long byte double float boolean char |
int short long byte double float bool char |
Int32 Int16 Int64 Int8 Double Float Bool Character |
字串 |
String 變數名=""; |
string 變數名=""; |
let 變數名 : String=""; |
字串嵌入值 |
N/A |
"\{運算式}" |
"\(運算式)" |
可變字串 |
StringBuilder |
StringBuilder |
var 變數名 : String; |
定常數組 |
類型[] 變數名={元素1,元素2}; |
類型[] 變數名={元素1,元素2}; |
let 變數名 : 類型名[] = [元素1, 元素2]; |
變長數組(列表) |
ArrayList<類型> |
List<類型> |
var 變數名=類型名[](); |
追加元素 |
add |
Add |
append |
遍曆 |
for (類型 變數 : 集合) |
foreach (類型 變數 in 集合) |
for (變數 in 集合) |
字典 |
TreeMap<鍵類型, 實值型別> |
Dictionary<鍵類型, 實值型別> |
Dictionary<鍵類型, 實值型別> |
字典初始化 |
TreeMap<鍵類型, 實值型別> 變數名 = new TreeMap<鍵類型, 實值型別>() { { put(鍵1, 值1); put(鍵2, 值2); } }; |
var 變數名= new Dictionary<鍵類型, 實值型別>() { [鍵1] = 值1, [鍵2] = 值2, }; |
var 變數名 : Dictionary<鍵類型, 實值型別>= [ 鍵1 : 值1, 鍵2 : 值2 ]; |
字典下標 |
N/A(使用get方法) |
變數名[鍵] |
變數名[鍵] |
定義函數(方法) |
傳回型別 方法名(參數類型1 形參1, 參數類型2 形參2){} |
傳回型別 方法名(參數類型1 形參1, 參數類型2 形參2=預設值){} |
func 函數名(形參1 : 參數類型1, 外參名 形參2 : 參數類型2=預設值) -> 傳回型別{} |
調用函數(方法) |
方法名(實參1, 實參2); |
方法名(實參1, 實參2); |
函數名(實參1, 外參名 : 實參2); |
可變參數 |
傳回型別 方法名(參數類型… 形參){} |
傳回型別 方法名(params 參數類型[] 形參){} |
func 函數名(形參 : 參數類型...) -> 傳回型別{} |
傳出參數 |
N/A,包在對象裡面 |
傳回型別 方法名(ref 參數類型 形參){} 傳回型別 方法名(out 參數類型 形參){} |
func 函數名(inout 形參 : 參數類型) -> 傳回型別{} |
調用傳出參數 |
N/A |
實參 |
&實參 |
函數類型 |
N/A,用單方法介面替代 |
Action和Func系列泛型類 |
(參數類型1, 參數類型2) –> 傳回型別 |
閉包 |
(參數類型 形參) -> 運算式 () –> { 多行語句 } |
(參數類型 形參) => 運算式 () => { 多行語句 } |
{ (形參: 參數類型) –> 傳回型別 in 運算式} { () –>() in 多行語句 } |
枚舉 |
enum 類型名 { 枚舉值1(值1), 枚舉值2(值2), 枚舉值3(值3); } |
enum 類型名 { 枚舉值1=值1, 枚舉值2=值2, 枚舉值3=值3 } |
enum 類型名 { case 枚舉值1=值1, 枚舉值2=值2, 枚舉值3=值3 } |
結構(實值型別) |
N/A |
struct 結構名 { 成員 } |
struct 結構名 { 成員 } |
類(參考型別) |
class 類名 { 成員 } |
class 類名 { 成員 } |
class 類名 { 成員 } |
建立對象執行個體 |
new 類名(實參1, 實參2) |
new 類或結構名(實參1, 實參2) |
類或結構名(外參名1 : 實參1, 外參名2 : 實參2) |
靜態成員 |
static |
static |
結構和枚舉static,類和介面class |
存取層級 |
public,公有 protected,保護(包內和子類可訪問) 無修飾符,預設(包內可訪問) private,私人
|
public,公有 protected,保護(子類可訪問) internal,內部(程式集內可訪問) protected internal,內部保護(程式集內的子類可訪問) private,私人 |
public,公有 internal,內部(模組內可訪問) private,私人 |
儲存屬性 |
N/A,get set首碼方法命名規範 |
類型 屬性名稱 { get; set; }=初始值; |
var 屬性名稱 : 類型=初始值; |
計算屬性 |
N/A,get set首碼方法命名規範 |
類型 屬性名稱 { get { } set { //形參為value } } |
var 屬性名稱 : 類型 { get { } set(形參) { //如不寫形參名,預設為newValue } } |
索引器(下標) |
N/A |
傳回型別 this[參數類型 形參] { get { } set { //形參為value } } |
subscript(形參 : 參數類型) –> 傳回型別 { get { } set { //形參為newValue } } |
構造器 |
類名(參數類型 形參){} |
類名(參數類型 形參){} |
init(形參 : 參數類型){} |
自身執行個體 |
this |
this |
self |
調用其它構造器 |
類名() { this(實參); } |
類名() : this(實參) { } |
init() { self.init(外參名 : 實參); } |
繼承 |
class 衍生類別 extends 基類 { 成員 } |
class 衍生類別 : 基類 { 成員 } |
class 衍生類別 : 基類 { 成員 } |
調用基類構造器 |
衍生類別名(參數類型 參數) { super(參數); } |
衍生類別名(參數類型 參數) : base(參數) { } |
init(參數 : 參數類型) { super.init(外參名 : 參數); } |
虛函數 |
預設都可覆蓋,不可覆蓋標final |
標virtual可覆蓋 |
預設都可覆蓋, 不可覆蓋標@final |
密封類 |
final |
sealed |
@final |
覆蓋(override) |
不加修飾,可加@Override |
override |
override |
調用基類方法 |
super.方法(); |
base.方法(); |
super.方法(); |
類型檢查 |
基類執行個體 instanceof 衍生類別型 |
基類執行個體 is 衍生類別型 |
基類執行個體 is 衍生類別型 |
向下轉型 |
(衍生類別型)基類執行個體
|
(衍生類別型)基類執行個體 基類執行個體 as 衍生類別型 |
基類執行個體 as 衍生類別型 基類執行個體 as? 衍生類別型 |
介面 |
interface |
interface |
protocol |
實現介面 |
class 類 implement 介面 { 成員 } |
class 類 : 介面 { 成員 } |
class 類 : 介面 { 成員 } |
抽象類別 |
abstract |
abstract |
N/A |
擴充 |
介面的預設方法 |
擴充方法 |
extension |
命名空間 |
package |
namespace |
按module |