日期: 2023.09.28 星期四

前言

  1. 產生動態陣列(一般陣列如果需存放整數需定義一個 int [],存字串則須再定義一個 string [] …)
  2. 但泛(各式各樣)型(資料類型)把類別裡面某個屬性的資料類型設為變數,不一定侷限它是 int 或 string …
  3. 使用類別方法(這些都是集合)
  4. Generic 意指 泛型
  5. System.Collections.Generic 命名空間中有許多集合類別 (ListArrayList,..)可使用。

案例: 簡單產生一動態陣列與使用

使用一按鈕產生一動態陣列,然後加入三元素後,將其輸出到畫面上。

  1. 建立新專案: 檔案 > 新增 > 專案
    20231031072102
    20231031072236
    20231103143118
    20231031150345
  2. 產生 UI: 點選方案後,滑鼠右鍵,選擇加入 Web 表單
    20231103143257
    指定項目的名稱: WebForm1表單項目名稱
    20231031074051

  3. 產生後的表單 WebForm1.aspx 有兩子項目如下,雙擊 WebForm1.aspx 項目就可以進入設計介面。

    • WebForm1.aspx.cs 選此項,點擊滑鼠右鍵,選擇設計工具檢視,也可以進入設計介面
    • WebForm1.aspx.designer.cs
  4. 使用工具箱,加入以下控制項(元件)

    • 加一 Button1,產生動態陣列。
    • 加一 Label1,刪掉 Lebel1.Text 值。
  5. 使用者按下按鈕,寫事件方法

    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;
    }
  6. 輸出結果
    20231103150028

案例: 使用 ArrayList, List(Java 沒有)

  1. 前言:

    • ArrayList 不是定義在 System.Collections.Generic 裡面。
      ArrayList 是定義在 System.Collections 裡面,需做引入 using ystem.Collections;
    • ArrayList 效能較 List 差,因為若宣告是 ArrayList 類型,沒有事先指定元素資料類型,其預設裡面元素的資料類型是 Object
    • Java 語言所有類別都會繼承 ObjectC# 一樣,這個 Object 類別是最原始父類別,所以 Object 類別可以是任一資料型態類別
    • 優點 ArrayList 類別其集合元素可以是各式各樣資料型態,但缺點就變成常常要做型別轉換,所以效能就比較差了。
  2. 程式碼

    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;
    }

綜合實用案例

網路留言板(不儲存,只作即時顯示),留言時間與內容。

  1. 介面設計

    • 加入一新表單 WebForm2
    • 加入 TextBox1 存放留言內容,調整長、寬,需修改屬性為 TextMode=MultiLine,否則只能輸入一行。
    • 加入
      • Button1: 屬性 Text = Submit,送出與作記錄
      • Button2: 屬性 Text = Submit,當使用者想清除留言內容時
    • 加入 Label1 顯示之前所有留言,先行清除該設定值 Text = ""
      20231103153614
  2. 雙擊 Clear 按鈕,產生事件方法: 清除 TextBox1 輸入畫面

    protected void Button2_Click(object sender, EventArgs e)
    {
        TextBox1.Text = "";
    }
  3. 雙擊 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;
    }

    輸出
    20231103154649

  4. 問題: 當輸入內容為多行有換行文字時,結果沒換行。
    20231103155032

    使用者在瀏覽器畫面中按下的 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;
    }

    20231103155819

練習

設計一個網頁可以輸入圓半徑,按下按鈕,算出圓半徑與周長,並顯示它。


最後修改日期: 2023 年 11 月 22 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。