개체의 새 인스턴스를 만들고 싶습니다. IEnumerable<object>
할 수 있나요?
IEnumerable<object> a = new IEnumerable<object>();
개체의 새 인스턴스를 만들고 싶습니다. IEnumerable<object>
할 수 있나요?
IEnumerable<object> a = new IEnumerable<object>();
IEnumerable<T>. 당신은 같은 것을 사용해야합니다 List<T>.
IEnumerable<T>반복자를 나타내는 것이 아니라 반복 가능한 시퀀스를 나타냅니다 . IEnumerator<T>자체는 반복자를 나타냅니다.
답변:
예를 들어 List<object>를 구현 하는의 인스턴스를 만들 수 있습니다 IEnumerable<object>. 예:
List<object> list = new List<object>();
list.Add(1);
list.Add(4);
list.Add(5);
IEnumerable<object> en = list;
CallFunction(en);
IEnumerable<T>IMO가 좋지 않습니다.
이제 추가하고 싶음을 지정 했으므로 원하는 것은 간단 IEnumerable<T>하지 않지만 최소한 ICollection<T>. 다음 List<T>과 같이 사용하는 것이 좋습니다 .
List<object> myList=new List<object>();
myList.Add(1);
myList.Add(2);
myList.Add(3);
을 구현하기 IEnumerable<object>때문에 예상되는 모든 곳에서 myList를 사용할 수 있습니다 .List<object>IEnumerable<object>
(설명 이전의 답변)
IEnumerable<T>일반 인터페이스이므로 인스턴스를 만들 수 없습니다 (때로는 기본 구현을 지정할 수 있지만 일반적으로 COM에서만 사용됨).
그래서 당신이 정말로 원하는 것은 인터페이스 를 구현 하는 클래스 를 인스턴스화하는 것 입니다. 동작은 선택한 클래스에 따라 다릅니다. IEnumerable<T>
빈 시퀀스의 경우 다음을 사용하십시오.
IEnumerable<object> e0=Enumerable.Empty<object>();
비어 있지 않은 열거 형의 경우 IEnumerable<T>. 일반적인 선택은 배열입니다 T[], List<T>당신이 변하지을 원하는 경우 나 ReadOnlyCollection<T>.
IEnumerable<object> e1=new object[]{1,2,3};
IEnumerable<object> e2=new List<object>(){1,2,3};
IEnumerable<object> e3=new ReadOnlyCollection(new object[]{1,2,3});
구현하는 또 다른 일반적인 방법 IEnumerable<T>은 IS 반복자 기능 C # 3에서 소개 :
IEnumerable<object> MyIterator()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<object> e4=MyIterator();
또 다른 해결책은 Empty.
IEnumerable<object> a = Enumerable.Empty<object>();
그것에 대한 스레드가 있습니다 : IEnumerable을 초기화하기 위해 new List와 반대로 Enumerable.Empty ()를 사용하는 것이 더 낫습니까?
아니 IEnumerable인터페이스 이기 때문에 할 수 없습니다 .
를 구현하는 대부분의 비 인터페이스 유형의 빈 인스턴스를 만들 수 있어야합니다 IEnumerable. 예 :-
IEnumerable<object> a = new object[] { };
또는
IEnumerable<object> a = new List<object>();
아니요, 그렇게 할 수 없습니다. 대신 다음 코드 줄을 사용하십시오.
IEnumerable<int> usersIds = new List<int>() {1, 2, 3}.AsEnumerable();
도움이되기를 바랍니다.
IEnumerable은 인터페이스가 아니므로 인터페이스 인스턴스를 만들 수 없습니다.
당신은 이렇게 할 수 있습니다
IEnumerable<object> a = new object[0];
new SomeComInterface()하면 인터페이스 자체를 인스턴스화하는 것보다 인터페이스의 연관된 "CoClass"를 인스턴스화 한다고 말하는 것이 더 정확하지 않습니까?
new특정 상황에서 인터페이스와 함께 사용할 수 있다는 것입니다 .