簡體   English   中英

C#類中的訪問運算符/訪問器

[英]Access operator / accessor in C# class

如果我在C#示例中創建一個類,則可以使用Custom Matrix4類來編寫該類,該類允許我訪問它而不必顯式訪問成員變量。

一個簡單的Matrix4類的示例:

class Matrix4
{
    private double[,] _m = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
    public double[,] m
    {
        get { return (_m); }
        set { _m = value; }
    }
}

並訪問實際的2D陣列,也就是矩陣,我必須寫m4.m [1,1],是否有可能在不需要寫.m的地方將其寫成m4 [1,1] ] ,它不是超級導入,但是它很好,並且在C ++中是可能的,因此認為在C#中也可能,但是沒有找到任何有關它的信息。

當前的訪問方式:

Matrix4 m4 = new Matrix4();
Debug.Log(m4.m[1, 1]);

我希望如何:

Matrix4 m4 = new Matrix4();
Debug.Log(m4[1, 1]);

顯然,由於@ itsme86注釋指出了這一點,它在C#中稱為索引器。

這是使用矩陣示例的方法:

 class Matrix4
    {
        private double[,] _m = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
        public double this[int x, int y]
        {
            get { return (_m[x, y]); }
            set { _m[x, y] = value; }
        }
    }

並訪問它:

Matrix4 m4 = new Matrix4();
Debug.Log(m4[1, 1]);

使用索引器( https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/indexers/

class Matrix4
{
    private double[,] _m = new double[4, 4] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };
    public double this[int i,int j]
    {
        get { return (_m[i,j]); }
        set { _m[i,j] = value; }
    }
}
var m4 = new Matrix4();
// m4[1,1] == 1

暫無
暫無

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

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