0
나는 놀라운 것을 발견하고 누군가가 내게 무슨 일이 일어 났는지 설명 할 수 있기를 바랬다. Linq enumerables는 객체에 의해 구현 된 인터페이스를 방해 할 수 있습니다.Linq를 사용할 때 인터페이스가 손실되는 이유는 무엇입니까?
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
interface One
{
int id {get; set; }
}
class A : One
{
public int id {get; set; }
}
interface Two
{
}
class B : A, Two
{
}
public static void Main()
{
var list = new List<One>() { new B {id = 1} };
var b1 = list.Where(x => x.id == 1);
var b2 = list.First();
Console.WriteLine(b1 is Two);
Console.WriteLine(b2 is Two);
}
}
출력은 다음과 같습니다 :
False
True
나는 동일한 개체를 기다리고 있었다가 어디()와 첫 번째()에 의해 반환 된,하지만 분명히 반환 된 객체가 될 다른 유형이 코드를 실행하면 . 누군가가 이것에 대해 밝힐 수 있습니까?
감사합니다! 조건이 List<One>
내의 여러 개체로 One
충족 될 수 있으므로 톰 B.
'Where'는'IEnumerable'을 반환합니다. –
zerkms
여기서'IEnumerable '은 여러 결과가 조건을 만족시킬 수 있기 때문에 반환합니다. – mason
var b1 = list.Single (x => x.id == 1); // 콘솔에서 true를 인쇄해야합니다. – Derpy