নীচের প্রোগ্রামটি একবার দেখুন:
class Test
{
List<int> myList = new List<int>();
public void TestMethod()
{
myList.Add(100);
myList.Add(50);
myList.Add(10);
ChangeList(myList);
foreach (int i in myList)
{
Console.WriteLine(i);
}
}
private void ChangeList(List<int> myList)
{
myList.Sort();
List<int> myList2 = new List<int>();
myList2.Add(3);
myList2.Add(4);
myList = myList2;
}
}
আমি ধরে নিয়েছিলাম myList
পাস হয়ে গেছে ref
, এবং আউটপুট হবে
3
4
তালিকাটি প্রকৃতপক্ষে "রেফ দ্বারা পাস", তবে কেবল sort
ফাংশন কার্যকর হয়। নিম্নলিখিত বিবৃতিটির myList = myList2;
কোনও প্রভাব নেই।
সুতরাং আউটপুট আসলে:
10
50
100
আপনি কি আমাকে এই আচরণটি ব্যাখ্যা করতে সহায়তা করতে পারেন? যদি প্রকৃতপক্ষে যথাযথভাবে পাসmyList
না হয় (যেমন এটি myList = myList2
কার্যকর না হওয়ার ফলে দেখা যায়), কীভাবে myList.Sort()
কার্যকর হবে?
আমি এমনকি এই বিবৃতিটি কার্যকর না হওয়ার এবং আউটপুটটি ধরে নেওয়ার জন্য ধরে নিচ্ছিলাম:
100
50
10
ChangeList
একটিList<int>
হওয়ার চেয়ে ফিরে আসা ভাল bestvoid