variable practices namespace espaƱol codigos codificaciĆ³n best c# naming-conventions identifier

practices - constants naming convention c#



C#Nombre de la variable "_"(subrayado) solamente (3)

Hoy en día con C # 7.0 el _ tiene importancia a veces. Se convirtió en el operador de descarte para la nueva característica out var . Se utiliza cuando una función devuelve un valor y desea notificar al compilador que no lo va a utilizar, por lo que puede optimizarse. O cuando deconstruye (otra característica de C # 7.0) puedes usarla para ignorar parte de la tupla en la que no estás interesado.

Ejemplo de var

void Test(out int i) => i = 1; Test(out _); // _ was never declared, it will still compile in C# 7.0 var r = _; // error CS0103: The name ''_'' does not exist in the current context

Ejemplo deconstruyendo una tupla

var Person = ("John", "Smith"); var (First, _) = Person; // ''_'' is not a declared Debug.Print(First); // prints "John" Debug.Print(_); // error CS0103: The name ''_'' does not exist in the current context

Surge un problema si declara su propia variable llamada _ y luego usa el operador de descarte, esto causará ambigüedad. Este problema ha sido reportado Here .

EDITAR El problema anterior no es un problema, como señala @ maf-soft en los comentarios. Si se declaró _ , se trata como una variable regular como si fuera anterior a C # 7.0.

Acabo de recibir un problema menor en C #, fue solo un error copiar y pegar, pero no sé cómo C # lo acepta.

Este código se compila correctamente ... CÓMO

namespace DemoNS { class DemoClass { String _ = new String(''a'', 1); } }

¿Hay algún significado por defecto de la variable llamada _ ?


No, no hay un significado predeterminado, _ es solo un nombre de variable como cualquier otro.

Me gusta usarlo de manera similar a las variables anónimas de Prolog: cuando creas un lambda que ignora uno de sus parámetros, puedes nombrarlo _ :

EventHandler handler = (_, e) => Console.WriteLine(e);

Por otro lado, no lo usaría en ningún otro lugar, debería usar un nombre descriptivo.

EDITAR: Tenga en cuenta que en C # 7.0, _ veces tiene un significado especial. Por ejemplo, puede escribir _ = new String(''a'', 1); , incluso si no declaraste una variable llamada _ .


_ es un carácter válido igual que a o i y las variables sintácticas pueden comenzar con _ por lo que un solo nombre de carácter _ es perfectamente sintácticamente correcto. No es una opción realmente buena, pero compilará y funcionará bien.