Почему 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;
}