Vishal Patil Ответов: 2

Почему значение по параметру не увеличивается, а опорный параметр увеличивается ?


class Program
    {
        public static void value(int num)
        {
            num++;
        }
        public static void reference(ref int num)
        {
            num++;
        }
 
        static void Main(string[] args)
        {
            int num;
            Console.Write("Enter a number:\t");
            num = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("\n\n\tValue Type");
            Console.WriteLine("----------------");
            Console.Write("\nPrevious Value:\t{0}", num);
            Program.value(num);
            Console.Write("\nCurrent Value:\t{0}", num);
 
            Console.WriteLine("\n\n\n----------------");
            Console.WriteLine("\tReference Type");
            Console.WriteLine("--------------------");
            Console.Write("\nPrevious Value:\t{0}", num);
            Program.reference(ref num);
            Console.Write("\nCurrent Value:\t{0}", num);
            Console.ReadLine();
        }
    }


Что я уже пробовал:

может ли кто-нибудь объяснить мне, что на самом деле стоит за этим ?

2 Ответов

Рейтинг:
1

CPallini

Потому что это так по определению: (грубо говоря) метод может изменять только параметры, передаваемые по ссылке. Смотрите, например Передача Параметров (Руководство По Программированию На C#) | Microsoft Docs[^].


Рейтинг:
1

Jochen Arndt

Передача по значению и ссылке-фундаментальные свойства языков программирования.

См., например Стратегия оценки-Википедия[^] и Передача Параметров (Руководство По Программированию На C#) | Microsoft Docs[^].