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