मैं इस page, जो आधिकारिक तौर पर दृश्य स्टूडियो 17 आर सी के release notes में संदर्भित है पढ़ रहा था, यह कहा गया है:अधिभावी तरीके 7.0
ओवरलोडिंग अधिभावी के प्रयोजन के लिए छुपाएं, उसी प्रकारों और लंबाई के साथ-साथ उनके अंतर्निहित ValueTuple प्रकारों के tuples समकक्ष समझा जाता है। अन्य सभी मतभेद असीमित हैं।
किसी सदस्य को ओवरराइड करते समय इसे बेस सदस्य के मुकाबले या विभिन्न फ़ील्ड नामों के साथ टुपल प्रकारों का उपयोग करने की अनुमति है।
एक स्थिति है जहाँ एक ही फ़ील्ड नाम मेल नहीं खाने वाले क्षेत्रों आधार और व्युत्पन्न सदस्य हस्ताक्षर के बीच , एक चेतावनी द्वारा संकलक
बताया जाता है जब एक शॉट है कि देने के लिए उपयोग किया जाता है:
public abstract class Foo
{
public abstract void AbstractTuple((int a, string b) tuple);
public virtual void OverrideTuple((int a, string b) tuple)
{
Console.WriteLine($"First= {tuple.a} Second = {tuple.b}");
}
}
public class Bar : Foo
{
public override void AbstractTuple((int c, string d) tuple)
{
Console.WriteLine($"First= {tuple.c} Second= {tuple.d}");
}
public override void OverrideTuple((int c, string d) tuple)
{
base.OverrideTuple(tuple);
}
}
मैं निम्नलिखित त्रुटियाँ मिलती है: ((पूर्णांक
त्रुटि CS8139 'Bar.AbstractTuple ग, स्ट्रिंग घ)): Foo.AbstractTuple ' टपल तत्व नाम जब विरासत में मिला सदस्य अधिभावी नहीं बदल सकते' ((क, ख स्ट्रिंग int)) '
और
त्रुटि CS8139' बार .OverrideTuple ((पूर्णांक ग, स्ट्रिंग घ)): Foo.OverrideTuple 'जब विरासत में मिला सदस्य अधिभावी टपल तत्व नाम नहीं बदल सकते' ((एक int, स्ट्रिंग ख)) '
प्रश्न हैं:
क्या आधिकारिक डिजाइन नोट्स गलत है? या यह ऐसा व्यवहार है जिसे अभी तक आधिकारिक सी # 7.0 रिलीज में लागू किया जाना है?
यदि यह सही व्यवहार है, तो क्या यह समझ में आता है कि टुपल फील्ड नाम ओवरराइड विधि में समान होना चाहिए? ध्यान में रखते हुए कि एक ही टुपल्स
(int a, int b)
और(int c, int d)
के साथ दो विधियों को ओवरलोड उम्मीदवार नहीं माना जाता है और एक त्रुटि उत्पन्न होती है!क्या हमारे पास कहीं भी आधिकारिक सी # 7.0 विशेषताएं प्रलेखन हैं?
आपके द्वारा देखे जाने वाले व्यवहार सही हैं। मुझे याद नहीं है कि कौन सा एलडीएम उस निर्णय को शामिल करता है। लेकिन मैं अगले सप्ताह या दो में फीचर डिज़ाइन अपडेट करूंगा। Https://github.com/dotnet/roslyn/blob/master/docs/features/tuples.md –
FWIW पर ट्यून किए रहें, मुझे 'System.ValueTuple' का उपयोग करने वाली नकली असेंबली उत्पन्न करने का प्रयास करते समय यह त्रुटि दिखाई दे रही है। –