के साथ चयन में अनुमान से नहीं किया जा सकता है मुझे नहीं लगता कि मैं कुछ भी गूढ़ कर रहा हूं, लेकिन मुझे इसके बारे में कोई अन्य प्रश्न नहीं दिख रहा है।सी # प्रकार तर्कों का उपयोग एकाधिक रिटर्न
निम्नलिखित कोड (मैंने इसे आवश्यकतानुसार घटा दिया है) सी # 4 में एक कंपाइलर त्रुटि उत्पन्न करता है। हालांकि, यह स्पष्ट होना चाहिए कि प्रकार तर्क क्या है - एक सबसे बड़ा आम संप्रदाय ("कक्षा ए") है जो कि है "फ्रोब" विधि के रिटर्न प्रकार में भी स्पष्ट रूप से परिभाषित किया गया है। क्या कंपाइलर लैम्ब्डा अभिव्यक्ति में सभी रिटर्न प्रकारों की सूची नहीं बना सकता है, अपने पूर्वजों को खोजने के लिए एक वंश पेड़ बना सकता है, और फिर उस विधि के अपेक्षित रिटर्न प्रकार के साथ मेल खाता है? विधि के लिए
प्रकार तर्क 'System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func) के उपयोग से नहीं लगाया जा सकता। प्रकार तर्कों को स्पष्ट रूप से निर्दिष्ट करने का प्रयास करें।
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Sample
{
public abstract class A
{
private A(int index) { /* ... */ }
public sealed class A1 : A
{
public A1(string text, int index)
: base(index)
{ /* ... */ }
}
public sealed class A2 : A
{
public A2(int index)
: base(index)
{ /* ... */ }
}
private static Regex _regex = new Regex(@"(to be)|(not to be)");
public static IEnumerable<A> Frob(string frobbable)
{
return _regex.Matches(frobbable)
.Cast<Match>()
.Select((match, i) =>
{
if (match.Groups[1].Success)
{
return new A1(match.Groups[1].Value, i);
}
else
{
return new A2(i);
}
});
}
}
}
क्या आपने लौटने से पहले ए 1 और ए 2 को ए कास्टिंग करने का प्रयास किया है? लेकिन हाँ, मैं देख सकता हूं कि संकलक शिकायत क्यों करता है, यह जादूगर रूप से नहीं जानता है कि आप आम denominator वर्ग ए –