Почему double изменилось а int нет - C#
Формулировка задачи:
Уважаемые, не могу понять. А если быть точнее - то подтверждения не нашел.
Почему в ниже-приведенном коде значение массива меняется, а переменной i - не меняется?
Как я понимаю:
метод someMethod ничего не должен возвращать, т.к. он "void", но т.к. массивы являются ссылочными типами (подтверждение тому я не нашел), то значение в массиве было изменено, а в переменной i - нет. И если-бы не было массива, была-бы просто переменная double - то метод так-же бы ничего не вернул?
Так ли это? Или есть другое объяснение?
Спасибо.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class myClass { public void someMethod(double[] myArr, int i) { myArr[0] = 12.0; i = 12; } } class Program { static void Main(string[] args) { double[] arr1 = { 0, 1.5, 3.9, 5.1 }; int i = 0; Console.WriteLine("Массив arr1 до вызова метода: "); foreach (double d in arr1) Console.Write("{0}\t", d); Console.WriteLine("\nПеременная i = {0}\n", i); Console.WriteLine("Вызов метода someMethod ..."); myClass ss = new myClass(); ss.someMethod(arr1, i); Console.WriteLine("Массив arr1 после вызова метода:"); foreach (double d in arr1) Console.Write("{0}\t", d); Console.WriteLine("\nПеременная i = {0}\n", i); Console.ReadLine(); } } }
Решение задачи: «Почему double изменилось а int нет»
textual
Листинг программы
public void someMethod(double[] myArr, int i) { myArr = null; //myArr[0] = 12.0; i = 12; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д