किसी भी तरह कोड का पालन VS2010 में संकलित नहीं है लेकिन परिवर्तन के बिना VS2012 में संकलित करता है। VS2010 में समस्याग्रस्त लाइनयह कोड वीएस -2010 में .NET 4.0 के साथ क्यों संकलित नहीं करता है?
names.Select(foo.GetName)
त्रुटि CS1928 है: 'स्ट्रिंग []' 'चुनें' के लिए एक परिभाषा और सबसे अच्छा विस्तार विधि अधिभार 'System.Linq.Enumerable.Select < TSource, TResult शामिल नहीं है > (System.Collections.Generic.IEnumerable <TSource>, System.Func < TSource, TResult >) 'में कुछ ऐसी अमान्य तर्क हैं।
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
var foo = new Foo();
var names = new[] {"Hello"};
Console.WriteLine(string.Join(", ", names.Select(foo.GetName)));
}
}
public class Foo
{
}
static class Extensions
{
public static string GetName(this Foo foo, string name)
{
return name;
}
}
}
खैर नहीं काफी। वे बराबर कोड नहीं कर रहे हैं काफी - अपने कोड एक नया तरीका है जो सिर्फ getName के प्रतिनिधियों, तो एक प्रतिनिधि है कि विधि का उपयोग कर बनाने के ... जबकि मूल एक प्रतिनिधि getName के लिए सीधे बात कर बन जाएगा पैदा करेगा। –
@ जोनस्केट: लेकिन यह संकलन करने का एकमात्र तरीका है, है ना? जबकि विस्तार विधियां उदाहरण विधियों की तरह दिखती हैं, वे नहीं हैं और इस प्रकार हमेशा उनके जैसे उपयोग नहीं किए जा सकते हैं। –
@DanielHilgarth: नहीं - कोड मेरे लिए संकलित है और * एक अतिरिक्त विधि नहीं बनाता है। इसे स्वयं आज़माएं :) –