Так как structs являются типами значений, их данные копируются при передаче в метод в качестве аргумента. Пример:
int someInt = 7;
DoSomeMethod(someInt); // <-- This is passing the "value" 7.
До сих пор было легко понять, и вам, вероятно, интересно, как мой вопрос действителен... поэтому рассмотрим следующее:
public struct TimmysStructOfGoodness
{
public int SomeInt1;
public int SomeInt2;
public int SomeInt3;
// ... later that day ...
public int SomeInt999;
}
а затем со ссылкой на следующий код:
TimmysStructOfGoodness someStructOfGoodness = new blah blah blah...
DoSomeMethod(someStructOfGoodness); // <-- **HERE IS WHERE THE QUESTION APPLIES!**
Является ли приведенный выше оператор попыткой выделить несколько мегабайт оперативной памяти для "копирования" моего значения типа (struct)?
Если ответ да - тогда, когда/где - линия между "быстрее" и "медленнее"?
Если нет - тогда почему бы и нет? Поскольку я знаю типы значений, это должно быть проблемой.
ОСНОВНОЕ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я знаю, что это не имеет никакого отношения к тому, почему вы использовали бы стихи стилей класса, и я знаю, что я никогда не буду создавать структуру с 999 полями - это всего лишь вопрос об основах и кишках и например:)