程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 淺談Java 7的新特性與C# 2.0的相似之處

淺談Java 7的新特性與C# 2.0的相似之處

編輯:C#入門知識

 

   Java7 的新特性就是在switch 代碼塊中加入對String 的支持,雖然還僅僅是加入String,但已經相對之前的版本僅僅支持Integer 要好很多,這個功能在C# 1.0 中就被支持,而且不光是String,所有的對象均可用在switch 塊中(更正:C# 2.0 switch 只可以使用bool,char,integer,enum,string和相應的可空值類型中,A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type)。

    The try-with-resource Statement

    Java7 的這一個新特性對C# 2.0 程序員來說再熟悉不過了,在編碼一些需要及時釋放的資源時,通常的做法是在finally 塊中調用close() 一類的方法去釋放,而C# 提供了一個簡單的方法實現同樣的功能,代碼如下:

    以下是代碼片段:

    using(SqlConnection conn = new SqlConnection(“ConnectionStringHere”)){

    // Do something

    }

    上面的代碼等效於:

    以下是代碼片段:

    SqlConnection conn = new SqlConnection(“ConnectionStringHere”);

    try{

    conn.open();

    // Do somethind

    } finally{

    conn.close();

    }

    而Java7 實現了類似的功能,只不過不是用using,而是使用try,代碼如下:

    以下是代碼片段:

    try (BufferedReader br = new BufferedReader(new FileReader(path))){

    return br.readLine();

    }

 

對於C#,使用using 須滿足一個條件,即using 內聲明的對象實現了接口System.IDisposable,這樣一來,finally 塊中的代碼就可自動調用該接口下的Dispose()
    方法,從而實現釋放資源的目的。對於Java7 也有同樣的要求,就是對象必須實現接口java.lang.AutoCloseable 或者java.io.Closeable。
    The For-Each Loop
    Java7 終於實現for-each 循環功能了,雖然是在Java5 中的一個語法增強,但由於Java6 沒有語法更新,故我將這個增強列為Java7 的新特性。不過不理解為什麼還是使用for 作為關鍵字,而不直接像C# 那樣引入foreach 這個關鍵字,這樣是不是更容易理解呢。下面是Java 版本的for-each 代碼:
    以下是代碼片段:
    void cancelAll(Collection c){
    for (TimerTask t : c)
    t.cancel();
    }
    對於C# 版本,代碼如下:
    以下是代碼片段:
    void CancelAll(Collection c){
    foreach (TimerTask t in c)
    t.Cancel();
    }
    可以看出,兩者的實現並無太大區別,同樣簡潔明了,但適用范圍卻不一而足,Java7 貌似只能實現在集合中(包括傳統數組和泛型集合),而C# 可用在任何實現了System.IEnumerable 或其泛型版本System.IEnumerable 的對象中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved