簡體   English   中英

C# 屬性、構造函數、

[英]C# properties, constructor,

我想創建繪制板的類。 我寫了這樣的代碼(有效):

{
public class Map
{
    public int rows { get; set; }
    public int cols { get; set; }
    public int[,] grid { get; set; }

    public Map(int rows, int cols)
    {
        this.rows = rows;
        this.cols = cols;
        this.grid = new int[rows, cols];
    }
    public void printBoard()
    {
        for (int r = 0; r < rows; r++)
        {
            for (int c = 0; c < cols; c++)

            {
                Console.Write(grid[r, c] + "");
            }
            Console.WriteLine();
        }
    }
}
//Program.cs: 
Map map = new Map(2, 2); map.printBoard();

我有問題: 1.我可以創建數組作為屬性,然后像上面的代碼一樣在構造函數中初始化它(idk如何調用它)? 我在這里讀到我不應該這樣做,但也許事實並非如此https://stackoverflow.com/a/18428679 2. 如果沒問題,寫這樣的代碼是不是很好的做法,也許我可以寫得更好?

正如您鏈接到的答案中所述,屬性通常不應返回數組,因為這會將類的內部結構暴露給外部,而無法控制數組的一部分。 您聲明屬性的方式,客戶端可以將任意值插入數組,而您的類無法執行任何驗證。

按照慣例,屬性也應該使用大寫名稱。 但就您而言,正確的做法是將所有屬性字段設為私有。 然后添加一個索引器來更新數組(請注意,甚至可以從外部更改rowscols ,這肯定會導致未定義的行為)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM