Inicio › Herramientas para desarrolladores › Formateador de C#

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.

Publicidad
Publicidad

Cómo usar Formateador de C#

  1. Pega tu código C# en el editor de la izquierda, abre un archivo .cs o carga un ejemplo.
  2. Elige el estilo de llaves: Allman (nueva línea, el predeterminado de .NET), K&R (misma línea) o Stroustrup.
  3. Define la sangría y el ancho de línea; 4 espacios y 120 columnas coinciden con la configuración habitual de .NET.
  4. Revisa el resultado a la derecha, que se actualiza mientras escribes, o pulsa Formatear C# (Ctrl + Intro).
  5. 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 herramientaOpción de .editorconfigPredeterminado de .NET
Sangría: 4 espaciosindent_style = space, indent_size = 44 espacios
Estilo de llaves: Allmancsharp_new_line_before_open_brace = allall (Allman)
Estilo de llaves: K&Rcsharp_new_line_before_open_brace = none-
else / catch / finally en una línea nuevacsharp_new_line_before_else, _catch, _finally = truetrue
Etiquetas case indentadascsharp_indent_switch_labels = truetrue
Sin espacio después de una conversión (cast)csharp_space_after_cast = falsefalse
Espacio después de if, for, whilecsharp_space_after_keywords_in_control_flow_statements = truetrue
Ancho de líneamax_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, .Select y 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.

Herramientas relacionadas

Ver todas las de Formateadores y validadores de código →