Programa C# para imprimir la lista de colecciones no genéricas usando LINQ

La colección no genérica se define en el espacio de nombres System.Collections. Es una estructura de datos de propósito general que funciona con referencias a objetos, por lo que puede manejar cualquier tipo de objeto, pero no de forma segura. Las colecciones no genéricas están definidas por el conjunto de interfaces y clases. Podemos obtener todos los tipos que implementan una interfaz usando AppDomain junto con CurrentDomain. Estos dos dominios obtendrán la lista de colecciones. Junto con eso, usaremos IEnumerable. IEnumerable es una interfaz en C# que se usa para definir un método que solo permite el acceso de solo lectura a una colección y luego una colección que implementa esta interfaz se puede usar con una instrucción for-each. Esta interfaz contiene el espacio de nombres System.Collections.Generic. La interfaz IEnumerable es una interfaz genérica que permite recorrer listas genéricas o no genéricas.

Sintaxis :

método público IEnumerator()  

{  

     // Declaraciones   

Retorno: este método devuelve un enumerador que itera a través de la colección.

Ejemplo:

C#

// C# program to illustrate how to display the 
// list of non-generic collections using LINQ
using System;
using System.IO;
using System.Linq;
using System.Collections;
  
class GFG{
      
public static void Main(string[] args)
{
      
    // Get the type of IEnumerable
    var result = typeof(IEnumerable);
      
    // Get the domain
    var nonGenCollection = AppDomain.CurrentDomain.GetAssemblies().SelectMany(
                           x => x.GetTypes()).Where(x => result.IsAssignableFrom(x));
      
    // Display all the types using for loop
    foreach (var detail in nonGenCollection)
    {
        Console.WriteLine("---> " + detail.FullName);
    }
}
}

Explicación: En este ejemplo, definimos una variable «nonGenCollection» que obtendrá todos los IEnumTypes mediante el método «AppDomain.CurrentDomain.GetAssemblies()». Este método obtendrá todas las listas de colecciones no genéricas. Luego hemos iterado para cada bucle para mostrar el nombre completo de la colección.

Producción:

---> Mono.Security.X509.X509CertificateCollection
---> Mono.Security.X509.X509ExtensionCollection
---> System.ArraySegment`1
---> System.String
---> System.Array
---> System.Resources.IResourceReader
---> System.Resources.ResourceFallbackManager
---> System.Resources.ResourceReader
---> System.Resources.ResourceSet
---> System.Resources.RuntimeResourceSet
---> System.Reflection.TypeInfo+<GetDeclaredMethods>d__9
---> System.Reflection.TypeInfo+<get_DeclaredNestedTypes>d__23
---> System.Reflection.Assembly+<get_DefinedTypes>d__150
---> System.Threading.ThreadPool+<EnumerateQueuedWorkItems>d__21
---> System.Threading.Tasks.IProducerConsumerQueue`1
---> System.Threading.Tasks.MultiProducerMultiConsumerQueue`1
---> System.Threading.Tasks.SingleProducerSingleConsumerQueue`1
---> System.Threading.Tasks.ThreadPoolTaskScheduler+<FilterTasksFromWorkItems>d__7
---> System.IO.Iterator`1
---> System.IO.FileSystemEnumerableIterator`1
---> System.IO.DirectoryInfo+<CreateEnumerateDirectoriesIterator>d__39
---> System.IO.DirectoryInfo+<CreateEnumerateFilesIterator>d__43
---> System.IO.DirectoryInfo+<EnumerateFileSystemInfos>d__47
---> System.IO.File+<ReadLines>d__58
---> System.Runtime.Serialization.SurrogateHashtable
---> System.Runtime.Remoting.Channels.AggregateDictionary
---> System.Runtime.Remoting.Channels.BaseChannelObjectWithProperties
---> System.Runtime.Remoting.Channels.BaseChannelSinkWithProperties
---> System.Runtime.Remoting.Channels.BaseChannelWithProperties
---> System.Runtime.Remoting.Messaging.ConstructionCallDictionary
---> System.Runtime.Remoting.Messaging.MCMDictionary
---> System.Runtime.Remoting.Messaging.MethodCallMessageWrapper+DictionaryWrapper
---> System.Runtime.Remoting.Messaging.MessageDictionary
---> System.Runtime.Remoting.Messaging.MethodReturnDictionary
---> System.Runtime.Remoting.Messaging.MethodReturnMessageWrapper+DictionaryWrapper
---> System.Security.NamedPermissionSet
---> System.Security.PermissionSet
---> System.Security.Policy.ApplicationTrustCollection
Press enter to continue ......

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *