[英]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.