網頁

2010年5月28日 星期五

SQLite with Visual Studio 2005

採用 System.Data.SQLite(http://sqlite.phxsoftware.com/) -An open source ADO.NET provider for the SQLite database engine
請至 http://sourceforge.net/projects/sqlite-dotnet2/files/ 下載安裝檔案,我下載的是2010/04/18的版本SQLite-1.0.66.0-setup.exe(下載最新的就對了)

1. 安裝,重點就是一直按 Next,安裝目錄用預設值,把你現有的開發環境勾起來(我的是Visual Studio 2005),就會自動裝好了。


















































2. 測試
2.1 開啟一個新的 C# Console Application Project
2.2 專案開啟後,首先最重要的一步,就是 Add Reference,將System.Data.SQLiteSystem.Data.SQLite.Linq加進專案中。
2.3 主要程式碼如下
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SQLite;
using System.IO;

namespace SQLiteTest1
{
    class Program
    {
        public static SQLiteCommand cmd;

        public static void CreateTable()
        {
            string sql = "CREATE TABLE user(" +
                            "id INTEGER PRIMARY KEY, " +
                            "name text, " +
                            "sex int(1) NOT NULL DEFAULT 0 " +
                         ")";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
        }

        public static void DropTable()
        {
            string sql = "DROP TABLE user";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
        }

        public static void AddUser(string name, int sex)
        {
            string sql = " INSERT INTO user (name, sex) " +
                         " VALUES ('" + name + "', " + sex + ") ";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
        }

        public static void ListAllUser()
        {
            SQLiteDataReader sdr;

            string sql = "SELECT * from user";
            cmd.CommandText = sql;
            sdr = cmd.ExecuteReader();

            Console.WriteLine("ID\tNAME\tSEX");
            Console.WriteLine("------------------------------------------------");
            while (sdr.Read())
            {
                Console.WriteLine("{0}\t{1}\t{2}",
                    sdr["id"],
                    sdr["name"],
                    sdr["sex"]);
            }
        }

        static void Main(string[] args)
        {
            SQLiteConnection conn = null;

            try
            {
                string strDatabaseRoot = Directory.GetCurrentDirectory() + "\\SQLiteTest1.db";

                if (!File.Exists(strDatabaseRoot))
                {
                    SQLiteConnection.CreateFile(strDatabaseRoot);
                }

                conn = new SQLiteConnection("Data Source=" + strDatabaseRoot);
                conn.Open();
                cmd = conn.CreateCommand();
                DropTable();
                CreateTable();

                AddUser("Dick", 1);
                AddUser("Mary", 0);
                AddUser("GiGi", 0);
                ListAllUser();

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }

            Console.ReadLine();
        }
    }
}

Output:

閱讀全文...

小巧實用的資料庫 SQLite

資料庫一直是程式開發中不可或缺的好幫手,但現在許多有名的資料庫包山包海給你重量型的規格,當然也是重量型的價格。可是當你只是開發一個需要儲存,資料量不大,只需要單機使用,或是沒多人同時使用的需求,你會想搬出 Oracle、DB2和SQL Server嗎?No,此時不需要這種怪獸級的產品,SQLite會是個不錯的選擇。

SQLite(http://www.sqlite.org/index.html) 是一套 Embedded RDBMS,很適合加進應用程式裡頭跑,並且資料庫檔能輕鬆跨平台。一般的SQL92語法都有支援,單一檔案,不需要安裝科學怪獸,只需要寫程式時將他加入一起編譯就好了。

SQLite特性優缺點和支援的平台及程式語言,請拜請 Google 大神一撈或是光臨SQLite網站就有了。容我偷懶,光速逃。
閱讀全文...

2010年5月27日 星期四

C# Tutorial – 7. Control Statements Tutorial

每個程式常常在連續的步驟後,會遇到要停下來,判斷各種情況後,在繼續往下執行。底下是一些常用到的判斷語法。


Control Statements – Seelction
The if Statement
取決於給予的條件,來執行不同的程序,當條件是 true 時,將執行那區塊的程式碼。

syntax:
if () {
    statements;
} else if () {
….
} else {
        statements;
}

if (money > 0) {
        Console.WriteLine(“時間就是金錢({0}),朋友!”, money);
} else {
        Console.WriteLine(“天啊!你真窮。”);
}

當有多種情況需要判別時,就會衍生成下面的樣子

if (xx > 100) {
        statements;
} else if (xx<100 && xx > 50) {
        statements;
} else if (xx<50 && xx>20) {
        statements;
} else {
        statements;
}

The switch Statement
取決於給予的一整組邏輯的值,當符合其特定的參數,其包含的區塊成勢將會被執行。
switch 運算式的值可以為 booleansenumsintegral typesStrings

syntax:
switch ()
{
case value1:
        statements;
        break;
    case value2:
        statements;
        break;
    …
    default:
        statements;
        break;
}

int myInt;

    myInt = Console.ReadLine();
    // switch with integer type
    switch (myInt)
    {
        case 1:
            Console.WriteLine("Your number is {0}.", myInt);
            break;
        case 2:
            Console.WriteLine("Your number is {0}.", myInt);
            break;
        case 3:
            Console.WriteLine("Your number is {0}.", myInt);
            break;
        default:    // 當都不符合上面條件時,就會執行此區塊
            Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
            break;
    }

Control Statements – Loops
當要重複執行某些特定的動作,loops是最後達成這任務的。

The for Loop
for loop包含三個部分:起始值、條件判斷和條件增量。
syntax:
for (; ; ) {
;
}

ForLoop.cs
    using System;

    class ForLoop
    {
        public static void Main()
        {
            for (int i=0; i < 20; i++)
            {
                if (i == 10)
                    break;

                if (i % 2 == 0)
                    continue;

                Console.Write("{0} ", i);
            }
            Console.WriteLine();
        }
    }

Output:
1 3 5 7 9

說明:
1.      i的起始值為0;條件式是小於20i的增量每次加1
2.      i等於10的時候就會跳出for loop
3.      i2整除時,i直接加1

The while Loop
while loop就包含一個條件式,當條件一直成立(true)時,就是一直重複執行那段程式。

syntax:
while () {
;
}

WhileLoop.cs
    using System;

    class WhileLoop
    {
        public static void Main()
        {
            int myInt = 0;

            while (myInt < 10)
            {
                Console.Write("{0} ", myInt);
                myInt++;
            }
            Console.WriteLine();
        }
    }

The do Loop
do loop動作和while loop差不多,最明顯的差異在於 do loop最少會執行一次。

syntax:
do
{
;
} while ();

DoWhileLoop.cs
    using System;

    class DoWhileLoop
    {
        public static void Main()
        {
            int myInt = 0;

            do
            {
                Console.Write("{0} ", myInt);
                myInt++;
            } while (myInt < 10);
            Console.WriteLine();
        }
    }

總結:
Selection Control Statements讓你可以用不同的判斷式來執行不同的邏輯分支的程式。
Loop Control Statements 讓你可以輕鬆重複執行同一區塊的程式。
不同的情況選擇適當的 Control Statement 將會使程式更易於閱讀和執行工作,達到事半功倍的效用。

閱讀全文...

2010年5月26日 星期三

容忽視的隱患 差異性阻礙Android發展[此為網路轉帖]

很多Android手機用戶在近期得到了好消息,他們所使用的手機將會被升級至最新的Android 2.1操作系統。摩托羅拉、HTC、三星等製造商都推出或者正在計劃産品系統升級計劃,這涉及摩托羅拉MilestoneHTC Hero等熱門産品。此時,距Android 2.1系統發布已經有近3個月時間。




Android版本差異讓用戶抱怨
  但目前大部分Android手機,特別是更早的産品目前仍然只能使用較低的系統版本。其中一些産品或許會在未來升級,但並沒有具體時間表,另一部分則 或許永遠不會有升級計劃。這些手機用戶無法使用最新的Google應用,也不能擁有更絢麗的用戶介面。

採用Google Android 2.1操作系統的Nexus One
  不同版本的差異,已經被認爲是Google Android發展的一大障礙。從誕生起,Google Android系統經曆了多個版本,從1.0發展到了最新的2.1, 其中甚至包括精確到兩個小數點的2.0.1版本。不同版本的Android系統在介面上存在差異,應用程式也不能完全相容,Google並未提供統一的升級機制, 而是由製造商提供系統升級固件,或者以OTA的方式對系統進行更新。
  這一點和競爭對手蘋果iPhone不同。iPhone OS同樣有著很多不同的版本,但是由於硬體的統一性,蘋果能保證所有的iPhone能在新系統發布之後立即升級到最新版本。

程式開發者也面臨煩惱
  Android版本差異和應用程式相容性不僅被用戶抱怨,也爲開發者帶來了煩惱,他們必須決定爲那個版本開發軟件,這是個問題:新版系統將會在未來廣 泛應用,但舊版系統往往在很長時間內仍然是主流。

2009
年底Android不同版本比例分部
  Google曾經試圖爲開發者提供幫助,在2009年底,Android開發者官方博客提供了當時 Android版本在市場的份額比例,其中Android 1.51.6版本占據了超過60%的比例,2.02.0.1版本系統也顯示出很快的發展勢頭。然而,幾天之後Google就推出了採用Android 2.1系統的Nexus One,這讓開發者更加無所適從。

硬體和OEM介面同樣阻礙Android統一
  系統版本並非Android面對的唯一差異,這一系統産品的硬體差異同樣巨大。比如,最初的幾款 Android手機都採用了HVGA解析度的螢幕,但是現在,高端Android手機解析度已經達到了WVGA水準,一些低端産品則採用了QVGA解析度 的螢幕。另外在處理器、內存等方面,不同Android手機之間也存在很大差異。這無疑也會對開發者帶來困擾,他們需要針對不同硬體對應用程式做出調整, 這將花費更多的精力。

熱門的HTC Hero目前運行Android 1.6系統
  從這一點來講,蘋果iPhone平臺對於開發者會更有吸引力。值得一提的是,不僅是蘋果,從Windows Phone 7系統開始,微軟也將對産品的硬體規格進行嚴格控制,微軟也意識到,這將有助於未來保持系統版本的統一和應用程式相容性。
  另外,第三方OEM 介面也被認爲可能破壞Android系統的統一性。HTC、摩托羅拉、三星、索尼愛立信等公司,都在自己的Android手機上另外搭載了獨特的用戶界 面,這有助於保持産品的個性,避免過分同質化,但是也可能影響到系統的升級或者軟件運行異常。

差異性問題不容忽視
  Android 所面臨的這種局面已經得到很多業內人士的關注。開發者和手機製造商都必須考慮自己的軟件和産品選擇何種版本,甚至不得不針對Google的一次更新改變産品規劃。 在消費者層面,盡管目前尚未顯現太大的負面影響,但是長期來看這也是不可避免的:如果用戶不確定自己購買的手機未來能否升級到最新系統並且使用最新應用, 他們會猶豫是否購買,特別是在需要和運營商簽訂很長協議的情況下。

目前最熱賣的摩托羅拉Droid採用Android2.0系統
  因此,盡管Android目前是行業的熱點,採用這一系統的産品正如雨後春筍般出現,但是差異性已經成爲其不可忽視的一個隱患。這一問題如果不被重 視,Android未來的命運將是一個未知數。

閱讀全文...

2010年5月24日 星期一

利用VBS定期刪除過期檔案

本文主要介紹如何利用VBS在WINDOWS上刪除過期檔案,雖然不是很常用,但久久就會有人問一次,寫下來當作備忘。

DeleteFolder.vbs

' ====== Code Start ===================
Option Explicit
 
WScript.Echo("作業開始執行:" & Date & " " & Time)
 
Dim FSO, agoDays, modifiedDate, delFolder
 
' 設定過期檔案預期天數
agoDays = 3
' 欲刪除檔案所在之目錄
delFolder = "D:\Temp"
 
Set FSO = CreateObject("Scripting.FileSystemObject")
 
modifiedDate = DateAdd("d", -agoDays, Date)
 
DelFilesInFolder FSO.GetFolder(delFolder)
 
Sub DelFilesInFolder(folder)
    Dim file, subFolder

    For Each file In folder.Files
        If ((file.DateLastModified <= modifiedDate)) Then
            file.delete
        End If
    Next

    ' 如果遇到子目錄,也要進去檢查並刪除
    For Each subFolder in folder.SubFolders
        DelFilesInFolder subFolder
    Next
End Sub
 
WScript.Echo("作業執行完畢:" & Date & " " & Time) 
' ====== Code End ===================

閱讀全文...

2010年5月20日 星期四

安裝Android模擬器

本文主要介紹如何在 Windows 安裝Android的開發環境,以供有興趣的朋友參考。


程式開發前,最重要的就是搞定開發環境,步驟如下:
1.      安裝 java sdk
請至 http://java.sun.com/javase/downloads/index.jsp 下載適合的sdk。下載時可能會遇到要你裝Sun Download Manager(SDM),讓你用SDM下載 JDK 了。但是不建議你使用SDM下載,至少我直接點網頁用ie下載完後,,SDM還沒連上SUM的伺服器,一直連線失敗。

2.      安裝 Eclipse
很實用的工具,以前是專門給JAVA用的,現在已經包羅萬象了,好多東西都可以透過它來編譯執行,包含 Android 也是。
請至 http://www.eclipse.org/downloads/ 下載檔案,我下載安裝的是 “Eclipse IDE for Java EE Developers” 這個版本。

3.      新增環境變數(Windows 7環境)
我的電腦右鍵->內容->進階系統設定->進階->環境變數->PATH->編輯->加上JRE安裝路徑(例如:C:\Program Files\Java\jre6\bin)

4.      安裝 Android 模擬器
4.1建立 Android 目錄(例如:D:\Android)
4.2下載 Google Android SDK
   請至 http://developer.android.com/sdk/index.html 下載,然後解壓縮放到 D:\Android\android_sdk目錄內。
4.3 Eclipse 安裝 Android Plugin
4.3.1 Help -> Install New Software

4.3.2 Add->Location填入 http://dl-ssl.google.com/android/eclipse/site.xml -> OK

4.3.3 勾選所有項目->Next

4.3.4 按 Next

4.3.5 Accept license -> Finish
4.3.6 安裝中

4.3.7 Yes(Restart Eclipse)

            4.4 設定 Android Plugin
4.4.1 Window -> Preferences

4.4.2 Android -> SDK Location填入 D:\Android\android_sdk -> OK

5.      測試使用模擬器
5.1 Window -> Android SDK and AVD Manager

5.2 New(新增一個模擬器)

5.3 在NameTargetSD CardSize填入值後 -> Create AVD

5.4 這時畫面就會多出一台模擬器了,綠色勾勾表示這台模擬器是有效的-> 按Start

5.5 這時請耐心等待,第一次整個畫面黑黑的,我也以為我哪裡弄錯了,等待了好一會就會出現下面畫面了

6.      又割來囉。Hello, Android.
6.1 File -> New -> Project

    6.2 Android Project -> Next

    6.3 下圖紅圈圈起來都是必填,上頭會有提示,有哪個沒填,Finish按鈕都無法按。
          Project Name: HelloAndroid
          Build Target: Android 2.1
          Application Name: HelloAndroid
          Package Name: com.google.android.hello
          Create Activity: HelloAndroid

   -> 按Finish
         等待一會專案就會建好了

    6.4 修改 HelloAndroid.java(大部分的程式碼在專案建立時就產生了)
package com.google.android.hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; // 新增此行

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.main);     // 使此行失效
        TextView tv = new TextView(this);     // 新增此行
        tv.setText("Hello, Android");         // 新增此行
        this.setContentView(tv);              // 新增此行
    }
}


    6.5 按 Run -> 顯示下面的畫面 Hello, Android

閱讀全文...

2010年5月18日 星期二

C# Tutorial - 6. String Tutorial

字串的操作一直是各語言的重頭戲,本文主要介紹C#常用操作字串的方法,以供有興趣的朋友參考。


C# 使用 string 來宣告字元陣列。其常值使用雙引號來高告。
string str1 = “Hello, ”;
string str2 = “C#”;
str1 += str2;
System.Console.WriteLine(str1);    // outputs: Hello, C#

常使用這種方式來結合字串,但是C#的字串為物件,一旦建立後就無法改變。這樣的結果會產生一堆字串物件,會產生一堆字串物件,基於效能的考量,,這時需改用 StringBuilder class 來進行大量的字串處理。
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(“str1 “);
sb.Append(“str2 “).Append(“str3”);
string str = sb.ToString();

NOTE: 在建立字串參考時要特別注意,當建立字串參考後,修改原字串的值,此參考會指向原字串的原始物件,而不是指向新修改的物件。
string str1 = “test”;
string str2 = str1;
str1 += “123”;
System.Console.WriteLine(str2);    // outputs: test

使用字串
逸出字元和大五碼的中文字常常都是字串在使用上需特別注意的地方,此時反斜線(\)會有超出常人的功用在。

@ 符號會告訴字串建構函式忽略逸出字元和分行符號。因此下列兩個字串是完全相同的:
string p1 = "\\\\My Documents\\My Files\\";
string p2 = @"\\My Documents\My Files\";

@ tips is multi-line strings in C#
string str = @”select *
                        from txn
                        where bb=2”;

ToString() 用來將數值轉換成字串。
int year = 2010;
string msg = "Happy New Year " + year.ToString();
System.Console.WriteLine(msg);  // outputs "Happy New Year 2010"

Null 字串和空字串
Null string 不是 System.String Object的執行個體(instance),當你嘗試去使用 Null string 的方法時,將導致 NullReferenceException
string nullStr = null;
int len = nullStr.Length();         // throws NullReferenceException
空字串是 System.String Object的執行個體,包含零個字元。空字串初始化如下:
string str = “”;

常用的字串使用方法
Length() 取回字串長度。

Split() 傳回字串陣列,其中每個項目都是文字。
MSDN Example:
class TestStringSplit
{
    static void Main()
    {
        char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

        string text = "one\ttwo three:four,five six seven";
        System.Console.WriteLine("Original text: '{0}'", text);

        string[] words = text.Split(delimiterChars);
        System.Console.WriteLine("{0} words in text:", words.Length);

        foreach (string s in words)
        {
            System.Console.WriteLine(s);
        }
    }
}

Output:
Original text: 'one     two three:four,five six seven'
7 words in text:
one
two
three
four
five
six
seven

搜尋字串內容
string 提供許多有用的方法來搜尋字串內容。下列範例使用了 IndexOf()LastIndexOf()StartsWith() EndsWith() 方法。
MSDN Example:
class StringSearch
{
    static void Main()
    {
        string str = "A silly sentence used for silly purposes.";
        System.Console.WriteLine("'{0}'",str);

        bool test1 = str.StartsWith("a silly");
        System.Console.WriteLine("starts with 'a silly'? {0}", test1);

        bool test2 = str.StartsWith("a silly", System.StringComparison.OrdinalIgnoreCase);
        System.Console.WriteLine("starts with 'a silly'? {0} (ignoring case)", test2);

        bool test3 = str.EndsWith(".");
        System.Console.WriteLine("ends with '.'? {0}", test3);

        int first = str.IndexOf("silly");
        int last = str.LastIndexOf("silly");
        string str2 = str.Substring(first, last - first);
        System.Console.WriteLine("between two 'silly' words: '{0}'", str2);
    }
}

Output:
'A silly sentence used for silly purposes.'
starts with 'a silly'? False
starts with 'a silly'? True (ignore case)
ends with '.'? True
between two 'silly' words: 'silly sentence used for '

連結多個字串
連結字串有兩種方法:
1.      使用 + 運算子。優點是非常容易使用,撰寫程式碼容易;缺點是會產生好多字串,造成效能問題。
string two = "two";
string str = "one " + two + " three";
System.Console.WriteLine(str);

      上面程式碼共產生了五個字串。

2.      使用 StringBuilder class Append 方法來連結字串,不會產生 + 運算子的問題。
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(“str1 “);
sb.Append(“str2 “).Append(“str3”);
string str = sb.ToString();
System.Console.WriteLine(str);

修改字串內容
字串是「不可變動的」(Immutable),所以不可能修改字串內容。然而,字串的內容可抽取至非不可變動的表單、進行修改,然後形成新的字串執行個體。
MSDN Example:
class ModifyStrings
{
    static void Main()
    {
        string str = "The quick brown fox jumped over the fence";
        System.Console.WriteLine(str);

        char[] chars = str.ToCharArray();
        int animalIndex = str.IndexOf("fox");
        if (animalIndex != -1)
        {
            chars[animalIndex++] = 'c';
            chars[animalIndex++] = 'a';
            chars[animalIndex] = 't';
        }

        string str2 = new string(chars);
        System.Console.WriteLine(str2);
    }
}

Output:
The quick brown fox jumped over the fence
The quick brown cat jumped over the fence

說明:
1. 使用 ToCharArray  方法將字串內容抽取至 char  型別的陣列。
2. 修改此陣列中的某些項目。
3. 使用 char 陣列建立新的字串執行個體。

閱讀全文...

2010年5月17日 星期一

C# Tutorial - 5. Array Tutorial

陣列是各語言最常用的資料結構,本文主要介紹C#操作陣列的方法,以供有興趣的朋友參考。


陣列是一種資料結構,其中會包含多個相同型別的變數。陣列是用型別宣告:
type[] arrayName;

C#陣列有下列屬性:
* 陣列是以0為起始索引,即包含 n 個元素的陣列建立索引時,會從 0 開始,一直到 n-1 為止。
* 陣列可以是一維、多維或不規則。
* 數值陣列元素的預設值會設定為零,而參考元素則設定為 null
* 不規則陣列是指包含陣列的陣列,因此其元素為參考型別,而且會初始化為 null
* 陣列元素可以是任何型別,包括陣列型別。
* 陣列型別是從抽象基底型別 Array 衍生的參考型別。由於此型別會實作 IEnumerable IEnumerable,您可以在 C# 中的所有陣列上使用 foreach 反覆運算。

Declaring Arrays(宣告)
Example:
Single-dimensional arrays:
int[] numbers;

Multidimensional arrays:
string[,] names;

Array-of-arrays (jagged):
byte[][] scores;

Initializing Arrays(初始化)
C# array 都是 Objects,使用前都必須先初始化。
Note                如果 Array 宣告時未初始化,其元素將會被自動初始化為個型態的預設值,數值為 0,其他參考元素為NULL

Example:
Single-Dimensional Array
int[] numbers = new int[5] {1, 2, 3, 4, 5};
string[] names = new string[3] {"Matt", "Joanne", "Robert"};
- or -
int[] numbers = new int[] {1, 2, 3, 4, 5};
string[] names = new string[] {"Matt", "Joanne", "Robert"};
- or -
int[] numbers = {1, 2, 3, 4, 5};
string[] names = {"Matt", "Joanne", "Robert"};

Multidimensional Array
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} };
- or -
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} };
- or -
int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} };

Jagged Array (Array-of-Arrays)
int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
- or -
int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
-or-
int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };

Accessing Array Members(使用)
Example:
Single-Dimensional Array
int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
numbers[4] = 5;

Multidimensional array
int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };
numbers[1, 1] = 5;

Jagged array
int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5}
};

設定值
numbers[0][0] = 58;
numbers[1][1] = 667;

Arrays are Objects
C# arrays 實際上是個物件。 System.Array 為最基礎的類別,提供了許多有用的 methods/properties
Example:
int[] numbers = {1, 2, 3, 4, 5};
int LengthOfNumbers = numbers.Length;

Using foreach on Arrays
利用 foreach 可以簡單且清楚的方法來逐一查看陣列中的元素。

Example:
Single-Dimensional Array
int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0};
foreach (int i in numbers)
{
   System.Console.WriteLine(i);
}

Multidimensional Array
int[,] numbers = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}};
foreach(int i in numbers)
{
   Console.Write("{0} ", i);
}

The output of this example is:
9 99 3 33 5 55

閱讀全文...