Короче говоря, я приведу упрощенный пример, где это может быть полезно:
public struct Vector3f {
public float x;
public float y;
public float z;
public unsafe float this[int index] {
get {
// Get "p" somehow, so that it points to "this"...
return p[index];
}
set {
// Get "p" somehow, so that it points to "this"...
p[index] = value;
}
}
}
Думаю, вы поняли мою точку зрения:
var v = new Vector3f();
Assert(v.x == v[0]);
РЕДАКТИРОВАТЬ 1:
Для те, кто все еще спрашивает:)
Assert(v.y == v[1]);
Assert(v.z == v[2]);
РЕДАКТИРОВАТЬ 2:
Создает ли здесь исправлено
избыточные накладные расходы?
Или, может быть, эта структура уже исправлена, и поэтому fixed
здесь не действует и требуется только для удовлетворения требований компилятора? Возможный ответ .