Поскольку я решил диверсифицировать себя с помощью Rust and Go, я стал чрезмерно беспокоиться о копировании / ссылках / перемещении и т. Д.
И недавно я действительно задумался, не страдают ли ValueTuple
также от типичного предостережения struct
это означает, что его размер не должен превышать 16 байт, чтобы избежать производительности при копировании типа значения здесь и там: https://stackoverflow.com/a/1082341/4636721
Так что, если, скажем, у нас есть кортеж значения (decimal, decimal, decimal, decimal)
, это означает, что мы лучшеотключить использование классического Tuple<decimal, decimal, decimal, decimal>
класса для обхода этого кортежа?
[EDIT]
Пример варианта использования: допустим, приведенный ниже метод будет вызывать много
public (decimal, decimal, decimal, decimal) GetSuperImportantTuple(int input)
{
var aParameter = GetAParameter(input);
// Copy when getting that tuple
var tuple = GetA4DecimalsValueTuple();
// Copy into that function
var anotherParameter = GetAnotherParameter(tuple);
// Copy when returning the value
return TransformValueTuple(tuple, anotherParameter);
}