日期: 2023.09.28 星期四
前言
- 產生動態陣列(一般陣列如果需存放整數需定義一個 int [],存字串則須再定義一個 string [] …)
- 但泛(各式各樣)型(資料類型)把類別裡面某個屬性的資料類型設為變數,不一定侷限它是 int 或 string …
- 使用類別方法(這些都是集合)
Generic
意指 泛型System.Collections.Generic
命名空間中有許多集合類別 (List
、ArrayList
,..)可使用。
案例: 簡單產生一動態陣列與使用
使用一按鈕產生一動態陣列,然後加入三元素後,將其輸出到畫面上。
- 建立新專案: 檔案 > 新增 > 專案
-
產生
UI
: 點選方案後,滑鼠右鍵,選擇加入Web 表單
指定項目的名稱:WebForm1
即表單項目名稱
-
產生後的表單
WebForm1.aspx
有兩子項目如下,雙擊WebForm1.aspx
項目就可以進入設計介面。WebForm1.aspx.cs
選此項,點擊滑鼠右鍵,選擇設計工具檢視,也可以進入設計介面WebForm1.aspx.designer.cs
-
使用工具箱,加入以下控制項(元件)
- 加一
Button1
,產生動態陣列。 - 加一
Label1
,刪掉Lebel1.Text
值。
- 加一
-
使用者按下按鈕,寫事件方法
protected void Button1_Click(object sender, EventArgs e) { string result = ""; //透過建構子產生動態陣列 List<int> myArray = new List<int>(); //動態陣列可存入無限元素 myArray.Add(3); myArray.Add(10); myArray.Add(20); //排序 //xx Array.Sort() 因是一個動態陣列,已經是一個物件,所以應該直ist 類別以提供的 Sort() 方法 myArray.Sort(); //取出結果 foreach (int num in myArray) { result += num.ToString() + "<br>";; } Label1.Text = result; }
- 輸出結果
案例: 使用 ArrayList, List(Java 沒有)
-
前言:
ArrayList
不是定義在System.Collections.Generic
裡面。
ArrayList
是定義在System.Collections
裡面,需做引入using ystem.Collections;
。ArrayList
效能較List
差,因為若宣告是ArrayList
類型,沒有事先指定元素資料類型,其預設裡面元素的資料類型是Object
。Java
語言所有類別都會繼承Object
跟C#
一樣,這個Object
類別是最原始父類別,所以Object
類別可以是任一資料型態類別。- 優點
ArrayList
類別其集合元素可以是各式各樣資料型態,但缺點就變成常常要做型別轉換,所以效能就比較差了。
-
程式碼
using System.Collections; : protected void Button1_Click(object sender, EventArgs e) { string result = ""; //透過建構子產生動態陣列 ArrayList myArray = new ArrayList(); //動態陣列可存入無限元素 myArray.Add(3); myArray.Add(10); myArray.Add(20); //排序 //xx Array.Sort() 因是一個動態陣列,已經是一個物件,所以應該直ist 類別以提供的 Sort() 方法 myArray.Sort(); //取出結果 foreach (int num in myArray) { result += num.ToString() + "<br>";; } Label1.Text = result; }
綜合實用案例
網路留言板(不儲存,只作即時顯示),留言時間與內容。
-
介面設計
- 加入一新表單
WebForm2
- 加入
TextBox1
存放留言內容,調整長、寬,需修改屬性為TextMode=MultiLine
,否則只能輸入一行。 - 加入
Button1
: 屬性Text = Submit
,送出與作記錄Button2
: 屬性Text = Submit
,當使用者想清除留言內容時
- 加入
Label1
顯示之前所有留言,先行清除該設定值Text = ""
。
- 加入一新表單
-
雙擊
Clear
按鈕,產生事件方法: 清除TextBox1
輸入畫面protected void Button2_Click(object sender, EventArgs e) { TextBox1.Text = ""; }
-
雙擊
Submit
按鈕,產生事件方法: 先取出TextBox1
輸入畫面值,protected void Button1_Click(object sender, EventArgs e) { //先取出 TextBox1 輸入畫面值 string result = TextBox1.Text; //訊息與訊息間區隔使用 ---- //使用靜態類別 DateTime result = "<hr>" + DateTime.Now + "<br>" + result; //累計 TextBox1 之前訊息 Label1.Text += result; }
輸出
-
問題: 當輸入內容為多行有換行文字時,結果沒換行。
使用者在瀏覽器畫面中按下的
Enter
換行動作,Browser
它看不懂,它會認定它是rn
的字元,解決此問題:protected void Button1_Click(object sender, EventArgs e) { //先取出 TextBox1 輸入畫面值 string result = TextBox1.Text; result = result.Replace("rn", "<br>"); //訊息與訊息間區隔使用 ---- //使用靜態類別 DateTime result = "<hr>" + DateTime.Now + "<br>" + result; //累計 TextBox1 之前訊息 Label1.Text += result; }
練習
設計一個網頁可以輸入圓半徑,按下按鈕,算出圓半徑與周長,並顯示它。
留言