.Cast<T>
LINQ 확장 방법에 대해 궁금한 점이 몇 번있었습니다. 나는 나 자신에게 "나는이 상황에서 필요한 것처럼 들린다"라고 생각하지만, 그것을 사용하려고 할 때마다 항상 결국 InvalidCaseException
이됩니다. 나는이 방법을 성공적으로 사용할 수 없었다. 여기에 예외를 확인하는 예 라인이다 :. 캐스트 <T> 확장 메서드가 항상 throw됩니다. InvalidCastException -이 메서드는 어떻게 사용해야합니까?
Enumerable.Range(0,10).Cast<float>().ForEach(Console.Out.WriteLine);
거기에 float
에 int
캐스팅에 대한 논란이 아무것도 없다, 왜이 방법은 그것을 거부합니까? 나는이 문제를 해결하고 단순히 너무 많은 혼전없는 .Select(x => (float)x)
Enumerable.Range(0, 10).Select(x => (float)x).ForEach(Console.Out.WriteLine);
으로 .Cast<float>
를 대체하여 원하는 효과를 얻을 수 있지만, Cast<float>
방법이 할 수없는 이유를 아직도 난 그냥하지 않을 수 있습니다 나를위한 직업.
간단히 말해서 : .Cast<T>
확장 방법을 어떻게 사용합니까?
이 질문에 관련이없는,하지만 누군가가 알고 싶은 경우에, 나는 그 코드에서 사용자 지정에 ForEach 확장 방법은 위의 최대 니펫 (표준 하나는리스트와 함께 작동) 사용 :
static class Extensions
{
public static void ForEach<T>(this IEnumerable<T> x, Action<T> l)
{
foreach (var xs in x) l(xs);
}
}
http://stackoverflow.com/questions/15394032/difference-between-casting-and-using-the-convert-to-method이 링크 좋은 설명을 확인하십시오 당신은 문제의 시도 다음을 모방하려는 경우 –