में List<int>
के पीछे तर्क को समझने में असमर्थ हूं क्योंकि यह कुछ बुनियादी नियमों को तोड़ता है।सूची <int> सी #
List<int>
मान प्रकार का होना चाहिए और संदर्भ प्रकार नहीं होना चाहिए।
List<int>
ref
कीवर्ड द्वारा प्रदान किया जाने वाला है, तो अपने मूल्य फ़ंक्शन कॉल के बीच एक समान होने के लिए गया है। तो इसका मतलब है कि यह int के समान मूल्य प्रकार व्यवहार प्रदर्शित कर रहा है।- लेकिन
List<int>
को एक नए ऑपरेटर द्वारा प्रारंभ किया जाना है।List<int>
भी शून्य हो सकता है। यह एक संदर्भ प्रकार व्यवहार का तात्पर्य है।
इसमें एक शून्य प्रकार अलग है क्योंकि इसमें नए ऑपरेटर द्वारा प्रारंभ नहीं किया जाना चाहिए।
क्या मैं यहां कुछ गलत देख रहा हूं?
EDITED-
मैं मूल प्रश्न अपने आप में कोड पोस्ट किया जाना चाहिए था। लेकिन यह यहां इस प्रकार है -
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ListTest d = new ListTest();
d.Test();
}
}
class ListTest
{
public void ModifyIt(List<int> l)
{
l = returnList();
}
public void Test()
{
List<int> listIsARefType = new List<int>();
ModifyIt(listIsARefType);
Console.WriteLine(listIsARefType.Count); // should have been 1 but is 0
Console.ReadKey(true);
}
public List<int> returnList()
{
List<int> t = new List<int>();
t.Add(1);
return t;
}
}
}
आपके बिंदु 1 के साथ आपका क्या मतलब है? क्या आप एक उदाहरण दे सकते हैं कि आपको क्यों लगता है कि आपको 'रेफरी' की आवश्यकता है? –
@ 0xA3 => एक विधि 1 बनाएं जो इसकी पैरामीटर के रूप में सूची लेता है। फिर मुख्य विधि पास विधि 1 में एक सूची । विधि 1 में सूची में कुछ पूर्णांक जोड़ें। मुख्य विधि में देखें कि क्या आप उन पूर्णांक को वापस प्राप्त करते हैं। –
Prashant
mattmc3 पहले से ही एक उदाहरण पोस्ट किया गया है जो दर्शाता है कि आपको 'ref' की आवश्यकता नहीं है। –