首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 與 Java 深度比較(一):平台架構、屬性與索引子

     編輯:關於C語言

.NET 平台與 C# 概覽

2000 年 6 月,微軟發布 C# 語言與 .NET 平台。.NET 核心包含:

  • CLR (Common Language Runtime):相當於 Java JVM,負責記憶體管理、執行緒、安全性等。
  • 基礎類別庫 (BCL):多語言共用,編譯為中介語言 (IL),類似 Java 位元組碼。

C# 與 Java 共通特性

  • 編譯為跨平台中介碼,受控環境執行
  • 自動垃圾回收,預設無指標(C# 需 unsafe 才能用指標)
  • 無標頭檔,以命名空間/組件管理範圍
  • 所有類別繼承自 object,需 new 配置記憶體
  • 支援介面、內部類別、多執行緒鎖定、陣列/字串邊界檢查
  • 統一使用 . 運算子,null/bool 為關鍵字
  • try-finally、布林條件判斷、變數必須初始化

屬性:語法糖簡化存取器

Java/C++ 需撰寫 getX()/setX(),C# 引入 property 語法:

// Java 風格
foo.setSize(foo.getSize() + 1);
label.getFont().setBold(true);

// C# 屬性語法
foo.Size++;
label.Font.Bold = true;

編譯器自動產生 get/set 存取器,並區分「欄位」與「屬性」。C# 要求成對出現,利於維護。

索引子:讓物件像陣列一樣被存取

索引子本質是參數化屬性,語法使用 this[int index]:

public class Skyscraper
{
    Story[] stories;
    public Story this[int index]
    {
        get { return stories[index]; }
        set { if (value != null) stories[index] = value; }
    }
}

// 使用方式
Skyscraper empireState = new Skyscraper(...);
empireState[102] = new Story("The Top One", ...);

此特性源自 VB/Delphi,極大簡化集合類別的使用體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved