我是C#的新手,我正在尝试实现矩阵类.我希望在(i,j)处有一个函数来支持设置和获取数据,即我希望能够将它用于两者M.at(i,j)=5.0和if (M.at(i,j)>3.0).在C++中,我会这样写:
double& at(i,j) {
return data[i * cols+ j];
}
Run Code Online (Sandbox Code Playgroud)
C#中的相同功能如何?我已经阅读了一些主题,例如是否可以在C#中返回对变量的引用? 但我不想使用包装器.
您正在寻找的是索引器:
public class Matrix
{
public double this[int i, int j]
{
get
{
return internalStorage[i, j];
}
set
{
internalStorage[i, j] = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你这样消费它:
var matrix = new Matrix();
if (matrix[i, j] > 3.0)
{
// double at index i, j is bigger than 3.0
}
matrix[i, j] = 5.0;
Run Code Online (Sandbox Code Playgroud)