首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 常見問題精選:視窗資料傳遞、Main 方法、GC、版面配置與正則表達式

     編輯:關於C語言

前言

整理 C# 開發中常遇到的五大類問題,涵蓋 Windows Forms 視窗間資料傳遞、Main 方法靜態特性、記憶體回收機制、表單版面錨定、正則表達式驗證等實用主題。

一、Windows 視窗間資料交互

1.1 使用帶參數的建構函式

在建立子視窗時,透過建構函式傳遞資料:

public ChildForm(string initData) : this()
{
    this.txtData.Text = initData;
}

關鍵概念:值型別(繼承 ValueType)宣告即配置記憶體;參考型別(繼承 object)宣告僅配置參考,需 new 實例化。

1.2 為視窗新增屬性或方法

  • 利用 Form.Owner 屬性取得擁有者視窗,轉型後存取公共成員。
  • 在視窗類別中自訂公共屬性/方法,外部直接呼叫。

1.3 靜態類別共享資料

將應用程式設定載入靜態類別,所有視窗透過靜態屬性/方法存取:

public static class AppContext
{
    public static string ConnectionString { get; set; }
    public static User CurrentUser { get; set; }
}

二、Main 方法必須為靜態

程式啟動時尚未建立任何實例,非靜態成員(實例成員)無法被呼叫。因此進入點 Main 必須宣告為 static。Main 內呼叫的其他成員亦需為靜態,除非先實例化對應類別。

三、.NET GC 記憶體回收機制

  • 可達性判斷:堆疊上有引用指向的物件視為「存活」,GC 不會回收。
  • 生命週期:在 new 所在的作用域結束前,物件通常不會被回收;作用域結束後,若無其他引用,下次 GC 執行時可能被回收並壓縮堆疊。
  • 代碼層面:避免長生命週期物件持有短生命週期物件引用,造成記憶體洩漏。

四、Windows Forms 版面配置:Anchor 屬性

透過 Anchor 定義控制項邊緣相對表單邊緣的固定方式,無需撰寫 Resize 事件代碼:

屬性值行為
Left = True左邊固定距離
Top = True上邊固定距離
Right = True右邊隨表單拉伸
Bottom = True下邊隨表單拉伸

設計階段即可預覽效果,極大簡化自適應版面開發。

五、正則表達式驗證使用者輸入

使用 System.Text.RegularExpressions.Regex 驗證 Email、電話、身分證字號等格式:

string emailPattern = @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$";
bool isValid = Regex.IsMatch(input, emailPattern);

六、設計器 Z-Order 控制

控制項的 BringToFront()、SendToBack() 對應設計器工具列的「移至最上層/最下層」,也可在屬性視窗調整 TabIndex 間接影響繪製順序。

結語

掌握這些核心概念,能解決 C# 開發中 80% 的常見困惑,讓程式碼更健壯、維護更輕鬆。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved