Eu quero criar uma nova instância de um objeto IEnumerable<object>
Posso fazer isso?
IEnumerable<object> a = new IEnumerable<object>();
Eu quero criar uma nova instância de um objeto IEnumerable<object>
Posso fazer isso?
IEnumerable<object> a = new IEnumerable<object>();
IEnumerable<T>. Você tem que usar algo parecido List<T>.
IEnumerable<T>não representa um iterador - ele representa uma sequência iterável . IEnumerator<T>em si representa o iterador.
Respostas:
Você pode, por exemplo, criar uma instância de List<object>, que implementa IEnumerable<object>. Exemplo:
List<object> list = new List<object>();
list.Add(1);
list.Add(4);
list.Add(5);
IEnumerable<object> en = list;
CallFunction(en);
IEnumerable<T>é uma má ideia da IMO.
Como agora você especificou que deseja adicionar a ele, o que você deseja não é simples, IEnumerable<T>mas pelo menos um ICollection<T>. Eu recomendo simplesmente usar um List<T>como este:
List<object> myList=new List<object>();
myList.Add(1);
myList.Add(2);
myList.Add(3);
Você pode usar myList em qualquer lugar onde um IEnumerable<object>seja esperado, desde List<object>implementa IEnumerable<object>.
(resposta antiga antes do esclarecimento)
Você não pode criar uma instância de, IEnumerable<T>pois é uma interface normal (às vezes é possível especificar uma implementação padrão, mas isso geralmente é usado apenas com COM).
Portanto, o que você realmente deseja é instanciar uma classe que implemente a interface IEnumerable<T> . O comportamento varia dependendo da classe que você escolher.
Para uma sequência vazia, use:
IEnumerable<object> e0=Enumerable.Empty<object>();
Para um enumerável não vazio, você pode usar alguma coleção que implemente IEnumerable<T>. As escolhas comuns são o array T[], List<T>ou se você quiser imutabilidade 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});
Outra maneira comum de implementar IEnumerable<T>é o recurso iterador introduzido em C # 3:
IEnumerable<object> MyIterator()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<object> e4=MyIterator();
Outra solução seria usar Empty.
IEnumerable<object> a = Enumerable.Empty<object>();
há um tópico no SO sobre isso: é melhor usar Enumerable.Empty () em vez de new List para inicializar um IEnumerable?
Não, você não pode, pois IEnumerableé uma interface.
Você deve ser capaz de criar uma instância vazia da maioria dos tipos de não interface que implementam IEnumerable, por exemplo: -
IEnumerable<object> a = new object[] { };
ou
IEnumerable<object> a = new List<object>();
Não, você não pode fazer isso. Use a seguinte linha de código:
IEnumerable<int> usersIds = new List<int>() {1, 2, 3}.AsEnumerable();
Espero que ajude.
Eu queria criar um novo objeto ou lista enumerável e ser capaz de adicionar a ele.
Este comentário muda tudo. Você não pode adicionar a um genérico IEnumerable<T>. Se você quiser ficar com as interfaces em System.Collections.Generic, precisará usar uma classe que implemente ICollection<T>like List<T>.
Nenhum IEnumerable é uma interface, você não pode criar uma instância de interface
você pode fazer algo assim
IEnumerable<object> a = new object[0];
new SomeComInterface()instancia a "CoClass" associada da interface em vez de instanciar a própria interface?
newcom uma interface em certas situações.
Você consegue fazer isso:
IEnumerable<object> list = new List<object>(){1, 4, 5}.AsEnumerable();
CallFunction(list);