Обновлять
Эта функция была добавлена в C # 7. Вы можете использовать синтаксис точно так же, как вы указали в своем вопросе. Например:
double[,,] doubleArray = new double[10,10,10];
ref double GetElement()
{
var (x,y,z) = (1,2,3);
return ref doubleArray[x, y, z];
}
Подробно подробно рассказывается в ответе Эрика Липперта. Я бы, вероятно, удалил этот ответ, но, поскольку это принятый ответ, я не могу его удалить.
Оригинальный ответ
Типы значений в C # всегда передаются по значению. Ссылка на объекты всегда передается по значению. Это изменяет небезопасный код, как указывает Axarydax.
Самый простой и безопасный способ избежать этого ограничения - убедиться, что ваш дубль каким-то образом прикреплен к объекту.
public class MyObjectWithADouble {
public double Element {get; set;} // property is optional, but preferred.
}
...
var obj = new MyObjectWithADouble();
obj.Element = 5.0
Я также хочу отметить, что меня немного смущает то, как вы ожидаете присвоения двойника трехмерному массиву. Возможно, вы захотите уточнить, что вы собираетесь делать.
Думаю, я немного лучше понимаю, на что вы сейчас собираетесь. Вы хотите вернуть местоположение значения в данном массиве, а затем иметь возможность изменить значение в этом месте. Этот шаблон нарушает некоторые из ожидаемых парадигм C #, поэтому я предлагаю рассмотреть другие способы достижения того, что вы ищете. Но если это действительно имеет смысл, я бы сделал что-то вроде этого:
public class 3dArrayLocation {public int X; public int Y; public int Z;}
...
public 3dArrayLocation GetElementLocation(...)
{
// calculate x, y, and z
return new 3dArrayLocation {X = x, Y = y, Z = z}
}
...
var location = GetElementLocation(...);
doubleArray[location.X, location.Y, location.Z] = 5.0;
person
StriplingWarrior
schedule
27.12.2010
double
- это тип значения. Период. - person John Saunders   schedule 28.12.2010int x = 42; int& y = x;
. Во всяком случае, я боюсь, что это не очень поможет OP;) - person Thomas Levesque   schedule 28.12.2010