संभावित डुप्लिकेट:
Enumerable.Cast<T> extension method fails to cast from int to long, why ?
Puzzling Enumerable.Cast InvalidCastException
Cast/Convert IEnumerable<T> to IEnumerable<U> ?क्यों नहीं <double>() IENumerable <int> पर काम नहीं करेगा?
मैं युगल की एक सरणी के लिए पूर्णांकों की एक सरणी परिवर्तित करने के लिए कोशिश कर रहा हूँ (ताकि मैं इसे एक समारोह है कि लेता है पारित कर सकते हैं युगल की एक सरणी)।
सबसे स्पष्ट समाधान (मेरे लिए, कम से कम) IENumerable के लिए कास्ट एक्सटेंशन फ़ंक्शन का उपयोग करना है, लेकिन यह मुझे एक अवैध कैस्ट अपवाद देता है, और मुझे समझ में नहीं आता है। मेरा कामकाज का उपयोग करना है इसके बजाय चयन करें, लेकिन मुझे लगता है कि कास्ट neater दिखता है।
क्या कोई मुझे बता सकता है कि कास्ट विधि क्यों काम नहीं कर रही है?
उम्मीद है कि कोड के नीचे मेरी समस्या दिखाता है:
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
var intArray = new[] { 1, 2, 3, 4 };
PrintEnumerable(intArray, "intArray: ");
var doubleArrayWorks = intArray.Select(x => (double)x).ToArray();
PrintEnumerable(doubleArrayWorks, "doubleArrayWorks: ");
// Why does this fail??
var doubleArrayDoesntWork = intArray.Cast<double>().ToArray();
PrintEnumerable(doubleArrayDoesntWork, "doubleArrayDoesntWork: ");
// Pause
Console.ReadLine();
}
private static void PrintEnumerable<T>(
IEnumerable<T> toBePrinted, string msgPrefix)
{
Console.WriteLine(
msgPrefix + string.Join(
",", toBePrinted.Select(x => x.ToString()).ToArray()));
}
}
}
ओउप्स ... मैंने पूछने से पहले पर्याप्त रूप से स्टैक ओवरफ़्लो की जांच नहीं की थी। मैंने पाया कि मेरा प्रश्न पहले से ही पूछा जा चुका है और उत्तर दिया गया है: http://stackoverflow.com/questions/1684448/enumerable-castt-extension-method-fails-to-cast-from-int-to-long- क्यों – dominic