Я много читал о структурах, и у меня есть приличное понимание того, где вы будете их использовать. Что меня беспокоит, так это то, что, сколько бы я ни читал об этом, я не понимаю неизменности структур.
Я понимаю, что, подобно строкам, если вы измените их, вы по сути создадите совершенно новый объект в памяти, но это также относится к значениям внутри структуры. Например:
public struct SomeValues
{
public int AnInt;
public float AFloat;
public string AString;
}
public SomeValues[] ArrayOfValues;
private void SomeFunctionThatRunsContinuously()
{
/*so for every value I change, do I essentially create a whole new instance
of SomeValues?*/
for (int i = 0; i < ArrayOfValues.Length; i++)
{
//Is this another struct?
ArrayOfValues[i].AnInt++;
//And then another again?
ArrayOfValues[i].AFloat += 0.33f;
/*I realise adding letters to a string is a horrible idea
-- but is it WORSE to do it in a struct?*/
ArrayOfValues[i].AString += "s";
}
}
Так, например, если бы у меня была структура, которая, например, содержала координаты каждого человека в 3D / 2D-пространстве (координаты были приведены в качестве примера того, когда использовать структуры), и положение людей меняется и обновляются внутри структуры типа две / три, возможно из массива, это создает новые структуры, потому что они неизменны?