Передача массива структур в функцию - C#
Формулировка задачи:
Есть следующие структуры:
Далее заполняю массив структуры Gorod, и передаю его в функцию, в которой изменяю значения структуры, но после завершения функции, значения передаваемого массива так же изменяются, видимо передается он по ссылке а не по значению. Как то можно это исправить? Пока решил проблему копией исходного массива внутри функции, но это какой то костыль.
public struct Gorod { public bool Otgr; public string Oblast; public Zakaz[] ZakazMas; public DateTime DataDost; public bool OnTime; } public struct Zakaz { public string CodeTovar; public long Count; public long CountDost; public double Ves; public double Persent; }
Решение задачи: «Передача массива структур в функцию»
textual
Листинг программы
class Program { static void Main(string[] args) { var ar = new Test[] { new Test { TestString = "First", Value = 1 }, new Test { TestString = "Second", Value = 2 }, new Test { TestString = "Third", Value = 3 } }; Console.WriteLine("Исходный массив"); Console.WriteLine(string.Join(Environment.NewLine, ar)); SomeFunc(ar); Console.WriteLine("После функции без изменения элементов"); Console.WriteLine(string.Join(Environment.NewLine, ar)); SomeFunc(ar, true); Console.WriteLine("После функции с изменением элементов"); Console.WriteLine(string.Join(Environment.NewLine, ar)); Console.Read(); } private static void SomeFunc(Test[] newTest, bool change = false) { for (var i = 0; i < newTest.Length; i++) { if (change) { newTest[i].Value *= 10; } else { var item = newTest[i]; item.Value *= 10; } } } } struct Test { public string TestString { get; set; } public int Value; #region Overrides of ValueType public override string ToString() { return string.Format("TestString = {0}; Value = {1}", TestString, Value); } #endregion }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д