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

Visual Studio 給 Java 開發者的 C# 指南 (13) - 屬性語法、唯讀/唯寫/可讀寫、Struct 值型別與預設建構子行為

     編輯:關於C語言

屬性

C# 屬性封裝私有欄位,提供 get/set 存取器。慣例:屬性 PascalCase、欄位 camelCase 或底線前綴。set 隱含參數 value 型別與欄位相同。

public class Animal
{
    private string name;
    public string Species
    {
        get => name;
        set => name = value;
    }
}

// 使用
Animal a = new Animal();
a.Species = "Lion";  // set
string s = a.Species; // get

屬性分類

  • 唯 get → 唯讀。
  • 唯 set → 唯寫 (罕見)。
  • 雙皆有 → 可讀寫。

內部實現

編譯器將存取器轉為 get_Species()/set_Species() 方法,確保與不支援屬性的 .NET 語言互通。

Struct (值型別)

  • 輕量級類別,可含建構子、常數、欄位、方法、屬性、索引子、運算子、巢狀型別。
  • 不可為 abstract、不支援實作繼承 (可實作介面)。
  • 值型別:指派/傳參數時複製整個實例 (vs 類別參考傳遞)。
  • 編譯器強制提供無參預設建構子 (將所有欄位歸零/null),不允許自訂無參建構子。

Struct 範例

using System;
public struct CustomerStruct
{
    public int ID;
    public string Name;
    public CustomerStruct(int id, string name) { ID=id; Name=name; }
}
class Test
{
    static void Main()
    {
        CustomerStruct c = new CustomerStruct(); // 呼叫預設建構子
        Console.WriteLine($"Before: ID={c.ID}, Name='{c.Name}'"); // 0, ""
        c.ID = 100; c.Name = "Robert";
        Console.WriteLine($"After: ID={c.ID}, Name='{c.Name}'");  // 100, Robert
    }
}

注意

若用 CustomerStruct c; (不 new),欄位未初始化,使用前必須賦值,否則編譯錯誤。

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