Formateador de C#
Pega código C# y recíbelo bien indentado y espaciado, con el estilo de llaves Allman que usa Visual Studio o con el estilo compacto K&R. Elige el tamaño de sangría y el ancho de línea; el formateador integrado funciona mientras escribes, y también está disponible clang-format compilado a WebAssembly. No se sube nada.
Última actualización:
Consejo: pulsa Ctrl + Intro para formatear; Tab indenta dentro del editor (pulsa antes Esc para mover el foco). Tu código se formatea en tu navegador y nunca se sube, compila ni ejecuta.
Cómo usar Formateador de C#
- Pega tu código C# en el editor de la izquierda, abre un archivo .cs o carga un ejemplo.
- Elige el estilo de llaves: Allman (nueva línea, el predeterminado de .NET), K&R (misma línea) o Stroustrup.
- Define la sangría y el ancho de línea; 4 espacios y 120 columnas coinciden con la configuración habitual de .NET.
- Revisa el resultado a la derecha, que se actualiza mientras escribes, o pulsa Formatear C# (Ctrl + Intro).
- Copia o descarga el código formateado como archivo .cs.
Opciones de diseño de C# y sus nombres en .editorconfig
Si tu proyecto usa un archivo .editorconfig, estas son las opciones que corresponden a las de esta herramienta, para que Visual Studio, Rider y dotnet format produzcan el mismo diseño:
| Opción en esta herramienta | Opción de .editorconfig | Predeterminado de .NET |
|---|---|---|
| Sangría: 4 espacios | indent_style = space, indent_size = 4 | 4 espacios |
| Estilo de llaves: Allman | csharp_new_line_before_open_brace = all | all (Allman) |
| Estilo de llaves: K&R | csharp_new_line_before_open_brace = none | - |
else / catch / finally en una línea nueva | csharp_new_line_before_else, _catch, _finally = true | true |
| Etiquetas case indentadas | csharp_indent_switch_labels = true | true |
| Sin espacio después de una conversión (cast) | csharp_space_after_cast = false | false |
Espacio después de if, for, while | csharp_space_after_keywords_in_control_flow_statements = true | true |
| Ancho de línea | max_line_length (lo usan algunas herramientas) | no se aplica |
Cómo se formatea la sintaxis propia de C#
- Las autopropiedades se quedan en una línea:
public string? Name { get; set; }. Las propiedades con cuerpos de descriptores de acceso se expanden en bloques. - Los inicializadores de objetos y colecciones escritos en una línea se quedan en línea con espacios dentro de las llaves:
new Person { Name = "Ann", Age = 30 }; los inicializadores de varias líneas mantienen un miembro por línea. - Lambdas y LINQ:
=>lleva un espacio a cada lado; las cadenas de consultas largas se dividen antes de.Where,.Selecty llamadas similares, y se conservan los saltos que ya pusiste antes de.. - Los operadores null se quedan pegados donde corresponde:
s?.Length ?? 0,items?[0],int? count,name!.Trim(). - Argumentos con nombre y tuplas:
Foo(name: "x")y(a: 1, b: "x")mantienen los dos puntos pegados al nombre, mientras que las listas de bases y las restricciones llevan espacios:class A : B where T : class. - Cadenas: los literales interpolados (
$"…{x}…"), textuales (@"C:\temp") y sin formato ("""…""") nunca se modifican.
¿Primero necesitas clases de modelo a partir de un JSON? Usa JSON a clase C# y luego pega aquí el resultado para ajustarlo a tu estilo de llaves.
Preguntas frecuentes
¿Qué estilo de llaves se usa normalmente en C#?
El estilo Allman, con cada llave de apertura en su propia línea, es el predeterminado en Visual Studio y en las guías de estilo del runtime de .NET (csharp_new_line_before_open_brace = all en .editorconfig). Algunos equipos, sobre todo en Unity y en proyectos multiplataforma, prefieren K&R con las llaves en la misma línea.
¿Formatear cambia el comportamiento de mi código C#?
No. Solo cambian los espacios en blanco y los saltos de línea. Los identificadores, las cadenas literales (incluidas las interpoladas, textuales y sin formato), los comentarios y las directivas de preprocesador se conservan exactamente como están escritos.
¿En qué se diferencia de dotnet format o de Formatear documento de Visual Studio?
dotnet format y Visual Studio usan el compilador Roslyn y tus reglas de .editorconfig, así que también pueden corregir problemas de estilo de código. Esta herramienta solo se ocupa del diseño (sangría, espaciado, llaves y ajuste de líneas), pero no necesita proyecto ni SDK y funciona con fragmentos que no compilan.
¿Qué hace el motor clang-format?
clang-format es el formateador de código de LLVM, que también admite C#. Se carga una vez como WebAssembly (unos 2 MB) y usa el estilo base de Microsoft con tus opciones de sangría, llaves y ancho. Si no se puede cargar, se usa automáticamente el formateador integrado.
¿Por qué las etiquetas case se indentan dentro de switch?
La opción predeterminada de Visual Studio (csharp_indent_switch_labels = true) indenta las etiquetas case un nivel dentro del bloque switch y las instrucciones que contienen un nivel más. El formateador sigue esa convención.
¿Se gestionan las directivas #region e #if?
Sí. #region y #endregion se indentan con el código que las rodea, mientras que #if, #else, #elif, #endif, #define y #undef se colocan al principio de la línea, como hace Visual Studio.
¿Se envía mi código a un servidor?
No. Todo se ejecuta en tu navegador. Solo el motor opcional clang-format se descarga desde una CDN pública cuando lo seleccionas; tu código nunca sale de tu dispositivo.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.