के साथ सी # में नेस्टेड जेनेरिक कक्षाओं को समझना सी # के बारे में एक सहयोगी के साथ बात करते हुए, उसने मुझे कुछ सी # कोड दिखाया जो मुझे आउटपुट की भविष्यवाणी करना पड़ा। यह पहली जगह में आसान लग रहा था, लेकिन यह नहीं था। मैं वास्तव में समझ नहीं सकता कि क्यों सी # इस तरह से कार्य करता है।प्रश्नोत्तरी
कोड:
public class A<T1>
{
public T1 a;
public class B<T2> : A<T2>
{
public T1 b;
public class C<T3> : B<T3>
{
public T1 c;
}
}
}
class Program
{
static void Main(string[] args)
{
A<int>.B<char>.C<bool> o = new A<int>.B<char>.C<bool>();
Console.WriteLine(o.a.GetType());
Console.WriteLine(o.b.GetType());
Console.WriteLine(o.c.GetType());
Console.ReadKey();
}
}
उत्पादन होता है:
System.Boolean
System.Char
System.Int32
मुझे सही अगर मैं गलत हूँ, लेकिन मैं समझता हूँ कि o.a
प्रकार bool की है, क्योंकि B<T3>
और B<T2>
inherits से C<T3>
inherits A<T2>
से। और मैं थोड़ा समझ सकता हूं कि o.c
प्रकार int है क्योंकि c
का प्रकार T1
है जो इसे बाहरी वर्ग (मुझे लगता है) से मिलता है।
जब मैं यह पता लगाने की कोशिश करता हूं कि o.b
टाइप प्रकार का है तो मेरा सिर लगभग विस्फोट कर रहा है। क्या कोई मुझे ये समझा सकता है?
मुझे खुशी है कि मैं आपकी कंपनी में कोड को बनाए नहीं रख रहा हूं। – Default
दिलचस्प, लेकिन व्यावहारिक कुछ भी के लिए कुल ओवरकिल। मुझे लगता है कि यह काम के बजाय अकादमिक है? – JGilmartin
@ डिफॉल्ट क्यों? क्योंकि वे एक दूसरे को अजीब सी # कोड पर प्रश्नोत्तरी करना पसंद करते हैं? – Erix