程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 總體了解C#(7-8 集合和foreach語句/結構)

總體了解C#(7-8 集合和foreach語句/結構)

編輯:C#入門知識

7.集合和foreach語句

C#提供一個for循環的捷徑,而且它還促進了集合類更為一致:

在Java或C++中:

1. while (! collection.isEmpty())

{

Object o = collection.get();

collection.next()

//...

2. for (int i = 0; i < array.length; i++)

//...

在 C#中:

1. foreach (object o in collection)

//...

2. foreach (int i in array)

//...

C#的for循環將工作於集合對象上(數組實現一個集合)。集合對象有一個GetEnumerator()方法,該方法返回一個Enumerator對象。Enumerator對象有一個MoveNext()方法和一個Current屬性。


8.結構

把C#的結構視為使語言的類型系統更為優雅而不僅是一種“如果你需要的話可以利用之寫出真正有效率的代碼”的概念更好些。

在C++中,結構和類(對象)都可分配在棧或堆上。在C#中,結構永遠創建在棧上,類(對象)則永遠創建在堆上。使用結構實際上可以生成更有效率的代碼:

public struct Vector

{

public float direction;

public int magnitude;

}

Vector[] vectors = new Vector [1000];

這將把1000個Vector分配在一塊空間上,這比我們把Vector聲明為類並使用for循環去實例化1000個獨立的Vector來得有效率得多。【譯注:因懷疑原文有誤,此處故意漏譯一句,但不應影響你對這節內容的理解】:

int[] ints = new ints[1000];//【譯注:此處代碼有誤,應為int[] ints = new int[1000];】

C#完全允許你擴展內建在語言中的基本類型集。實際上,C#所有的基本類型都以結構方式實現的。int型只不過是System.Int32結構的別名,long型不過是System.Int64結構的別名等等。這些基本類型當然可被編譯器特別處理,但是語言本身並無區別【譯注:意思是語言自身對處理所有類型提供了一致的方法】。在下一節中,我們可看到C#是如何做到這一點的。

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