Предаване на стойност по референция/променлива
Здрасти, банда!
Имам леко неразбиране на това как обекти си предават стойности м/у отделните методи. Доколкото разбирам от лекторите, масивите и списъците са референтни типове данни. Аз това го разбирам - не е нужно да използваш ref, за да прехвърлиш стойност м/у два и повече метода. Може да не съм го разбрал правилно, защото от кода долу очаквах bigger да си вземе коректно стойността. Оказа се, че, ако ref липсва, каквото и да правя bigger си взима по - ниската стойност??? Гледах го с дебъгера и реших проблема, като му казах, че е референция. Някой ще може ли да ми обясни защо работи така, тъй като не знам как да си формулирам въпроса към д-р Google?
using System;
using System.Collections.Generic;
using System.Linq;
namespace FUCKING_LISTS_Lab
{
class Program
{
static List<int> ListLengthChecker(ref List<int> bigger, ref List<int> smaller, ref List<int> temp)
{
if (smaller.Count > bigger.Count)
{
temp = bigger;
bigger = smaller;
smaller = temp;
return bigger;
}
else
{
return bigger;
}
}
static void Main(string[] args)
{
List<int> smaller = Console.ReadLine().Split().Select(int.Parse).ToList();
List<int> bigger = Console.ReadLine().Split().Select(int.Parse).ToList();
List<int> temp = new List<int>();
ListLengthChecker(ref bigger, ref smaller, ref temp);
for (int i = 0; i < smaller.Count; i++)
{
bigger.Add(smaller[i]);
}
for (int i = 0; i < bigger.Count; i++)
{
Console.Write(bigger[i] + " ");
}
}
}
}