IntelliSense para C#

IntelliSense de C# es una ayuda de finalización de código específica del lenguaje. Está disponible al escribir código de C# en el editor de código y depurarlo en la ventana de comandos Modo inmediato.

Listas de finalización

Las listas de finalización de IntelliSense en C# contienen, entre otros, los tokens de la lista de miembros y palabra completa. Proporciona acceso rápido a:

  • miembros de un tipo o espacio de nombres;

  • variables, comandos y nombres de funciones;

  • Fragmentos de código

  • Palabras clave del lenguaje

  • Métodos de extensión

Las listas de finalización en C# filtran los tokens irrelevantes y hacen una selección previa de un token en función del contexto. Para obtener más información, vea Listas de finalización filtradas.

Fragmentos de código en listas de finalización

En C#, la lista de finalización incluye fragmentos de código para facilitar la inserción en el programa de cuerpos de código predefinidos. Los fragmentos de código aparecen en la lista de finalización como el texto de acceso directo del fragmento de código. Para obtener más información sobre los fragmentos de código que están disponibles en C# de forma predeterminada, consulte Fragmentos de código de C#.

Palabras clave de lenguaje en listas de finalización

La lista de finalización incluye palabras clave del lenguaje C# para que pueda insertarlas en el programa. Para obtener más información sobre las palabras claves del lenguaje C#, vea el artículo sobre palabras clave de C#.

Métodos de extensión en listas de finalización

En C#, la lista de finalización incluye métodos de extensión que están en el ámbito.

Los métodos de extensión usan un icono diferente del que usan los métodos de instancia. Cuando un método de instancia y un método de extensión que tienen el mismo nombre se encuentran ambos en el ámbito, la lista de finalización muestra el icono de método de extensión.

Nota:

La lista de finalización no muestra todos los métodos de extensión para objetos String.

Listas de finalización filtradas

IntelliSense usa filtros para quitar los miembros innecesarios de la lista de finalización. C# filtra las listas de finalización que aparecen para estos elementos:

  • Interfaces y clases base: IntelliSense quita automáticamente los elementos innecesarios de las listas de finalización de clase base e interfaz, tanto en las listas de interfaz y base de declaración de clases como en las listas de restricciones. Por ejemplo, las enumeraciones no aparecen en la lista de finalización de las clases base porque las enumeraciones no se pueden usar para clases base. La lista de finalización de clases base solo contiene interfaces y espacios de nombres. Si selecciona un elemento en la lista y luego escribe una coma, IntelliSense quita las clases base de la lista de finalización. Lo hace porque C# no admite herencias múltiples. El mismo comportamiento se produce también con las cláusulas de restricción.

  • Atributos: cuando se aplica un atributo a un tipo, la lista de finalización se filtra para incluir únicamente los tipos que descienden de los espacios de nombres que contienen esos tipos. Por ejemplo, Attribute.

  • Cláusulas Catch: solo aparecen palabras clave try-catch válidas en la lista de finalización.

  • Inicializadores de objeto: solo los miembros que se pueden inicializar aparecen en la lista de finalización.

  • Palabra clave new: si se escribe new y luego se presiona la barra espaciadora, aparece una lista de finalización. IntelliSense selecciona automáticamente un elemento de la lista, que variará según el contexto del código. Por ejemplo, IntelliSense selecciona automáticamente elementos en la lista de finalización para las declaraciones y las instrucciones return de métodos.

  • Palabra clave enum: cuando presiona la tecla de barra espaciadora después de un signo igual para una asignación de enumeración, aparece una lista de finalización. IntelliSense selecciona automáticamente un elemento de la lista, que variará según el contexto del código. Por ejemplo, IntelliSense selecciona automáticamente elementos en la lista de finalización después de escribir la palabra clave return y al realizar una declaración.

  • Operadores as e is: cuando se presiona la barra espaciadora después de haber escrito la palabra clave as o is, IntelliSense muestra automáticamente una lista de finalización filtrada.

  • Eventos: si se escribe la palabra clave event, la lista de finalización solo contiene tipos delegados.

  • Ayuda de parámetros: IntelliSense ordena automáticamente por la primera sobrecarga de método que coincida con los parámetros que se especifican. Si existen varias sobrecargas de método, puede usar las flechas arriba y abajo para desplazarse a la siguiente sobrecarga posible de la lista.

Miembros usados más recientemente

IntelliSense recuerda los miembros que ha seleccionado recientemente en el cuadro emergente Lista de miembros para autocompletar nombres de objetos. La siguiente vez que utilice la lista de miembros, los miembros utilizados más recientemente se mostrarán en la parte superior. El historial de los miembros usados recientemente lo borra IntelliSense entre cada sesión de Visual Studio.

override

Cuando escriba invalidar y, luego, presione la tecla de barra espaciadora, IntelliSense muestra todos los miembros de la clase base válidos que se pueden reemplazar en un cuadro de lista emergente. Si se escribe el tipo de valor devuelto del método después de override, IntelliSense muestra solo los métodos que devuelven el mismo tipo. Si IntelliSense no encuentra ninguna coincidencia, muestra todos los miembros de clase base.

IntelliSense mejorado para inteligencia artificial

Visual Studio IntelliCode proporciona listas de finalización de código de IntelliSense mejoradas para inteligencia artificial. IntelliCode predice la API probablemente más correcta para usar, en lugar de simplemente presentar una lista alfabética de miembros. Usa el contexto de código actual y patrones para proporcionar esta lista dinámica.

Generación automática de código

Agregar using

La operación Add using de IntelliSense agrega automáticamente la directiva using necesaria al archivo de código. Esta característica le permite mantener el foco en el código que escribe en lugar de tener que cambiar el foco a otra parte del código.

Para iniciar la operación Add using, coloque el cursor en una referencia de tipo que no se pueda resolver. Por ejemplo, al crear una aplicación de consola y después agregar XmlReader en el cuerpo del método Main, aparece una línea de subrayado ondulado de color rojo en esa línea de código porque no se puede resolver la referencia de tipo. Puede invocar la operación Add using a través del menú Acciones rápidas. El elemento de menú usar <espacio de nombres> solo es visible cuando el cursor se coloca en la referencia sin resolver.

Para este ejemplo, para agregar la directiva using de forma automática, seleccione el icono de la bombilla de error y después elija using System.Xml;.

Captura de pantalla que muestra una operación Add using con una imagen de vista previa.

Agregar las directivas using que faltan al pegar

IntelliSense puede agregar automáticamente al código las directivas using que faltan al pegar un tipo en el archivo de código. Esta característica ahorra tiempo mediante la automatización de la tarea de agregar directivas using que faltan al pegar un tipo en un archivo.

Para habilitar esta característica:

  1. Seleccione Herramientas>Opciones.
  2. Seleccione Editor de texto>C# (o Visual Basic) >Avanzado en el panel izquierdo.
  3. En Usar directivas, seleccione Agregar directivas using que faltan al pegar.

Eliminar y ordenar instrucciones Using

La opción Eliminar y ordenar instrucciones Using ordena y quita instrucciones using y extern sin cambiar el comportamiento del código fuente. Con el tiempo, los archivos de origen se pueden ser demasiado grandes y resultan difíciles de leer debido a la presencia de directivas using innecesarias y desorganizadas. La opción Eliminar y ordenar instrucciones Using compacta el código fuente eliminando las instrucciones using que no se usan; además, las ordena, lo que hace que sean más fáciles de leer.

Para usar esta opción, seleccione Editar>IntelliSense>Ordenar Usings en la barra de menús, o haga clic con el botón derecho en el editor de código y seleccione Quitar y ordenar Usings.

Implementación de interfaz

IntelliSense proporciona una opción para ayudar a implementar una interfaz mientras trabaja en el editor de código. Normalmente, para implementar una interfaz correctamente, debe crear una declaración de método para cada miembro de la interfaz de su clase. Después de escribir el nombre de una interfaz en una declaración de clase, IntelliSense muestra una bombilla de Acciones rápidas. La bombilla ofrece la opción de implementar la interfaz automáticamente, mediante denominación explícita o implícita. Con la denominación explícita, las declaraciones de método llevan el nombre de la interfaz. Con la denominación implícita, las declaraciones de método no indican la interfaz a la que pertenecen. Puede tener acceso a un método de interfaz denominada explícitamente a través de una instancia de interfaz, pero no a través de una instancia de clase. Para obtener más información, vea Implementación explícita de interfaz.

La opción Implementar interfaz genera el número mínimo de códigos auxiliares del método necesario para satisfacer la interfaz. Si una clase base implementa partes de la interfaz, esos códigos auxiliares no se vuelven a generar.

Implementar una clase base abstracta

IntelliSense proporciona una opción útil para implementar miembros de una clase base abstracta de forma automática mientras se trabaja en el editor de código. Normalmente, la implementación de miembros de una clase base abstracta requiere la creación de una nueva definición de método para cada método de la clase base abstracta en la clase derivada. Después de escribir el nombre de una clase base abstracta en una declaración de clase, IntelliSense muestra una bombilla de Acciones rápidas. La bombilla ofrece la opción de implementar los métodos de la clase base automáticamente.

El código auxiliar del método generado por la característica Implementar clases base abstractas está modelado por el fragmento de código definido en el archivo MethodStub.snippet. Los fragmentos de código son modificables. Para más información, vea Tutorial: Crear un fragmento de código en Visual Studio.

Generar a partir del uso

La característica Generar a partir del uso le permite usar clases y miembros antes de definirlos. Puede generar un código auxiliar para cualquier clase, constructor, método, propiedad, campo o enumeración que desee usar pero aún no haya definido. Puede generar nuevos tipos y miembros sin abandonar su ubicación actual en el código. Esto minimiza la interrupción del flujo de trabajo.

Aparece una línea de subrayado ondulado de color rojo debajo de cada identificador no definido. Cuando sitúa el puntero del mouse sobre el identificador, aparece un mensaje de error en una ventana de información rápida. Para mostrar las opciones adecuadas, use uno de los procedimientos siguientes:

  • Seleccione el identificador no definido. Aparece una bombilla de error Acciones rápidas debajo del identificador. Seleccione la bombilla de error.

  • Seleccione el identificador no definido y, después, presione Ctrl+Punto (.).

  • Haga clic con el botón derecho en el identificador no definido y, después, seleccione Acciones rápidas y refactorizaciones.

Pueden aparecer las siguientes opciones:

  • Generar propiedad

  • Generar campo

  • Generar método

  • Generar clase

  • Generar nuevo tipo (para una clase, estructura, interfaz o enumeración)

Generar controladores de eventos

En el editor de código, IntelliSense puede ayudarle a enlazar métodos (controladores de eventos) a campos de evento.

Si escribe el operador += después de un campo de evento en un archivo .cs, IntelliSense le indicará que presione la tecla TAB. Al hacerlo, se inserta una nueva instancia de un delegado que apunta al método que controlará el evento.

Captura de pantalla que muestra un método de controlador de eventos de enlace que se le solicita.

Si presiona la tecla Tab, IntelliSense completa la instrucción automáticamente y muestra la referencia del controlador de eventos como texto seleccionado en el editor de código. Para completar el enlace de eventos automático, IntelliSense le indicará que presione la tecla TAB para crear un código auxiliar vacío del controlador de eventos.

Captura de pantalla que muestra un método de controlador de eventos generado.

Si presiona la tecla Tab de nuevo, IntelliSense crea el código auxiliar de un método con la firma correcta y coloca el cursor en el cuerpo del controlador de eventos.

Si un nuevo delegado creado por IntelliSense hace referencia a un controlador de eventos existente, IntelliSense comunica esta información en la información rápida. A continuación, puede modificar la referencia. El texto estará ya seleccionado en el editor de código. De lo contrario, el enlace de eventos automático ya se habrá completado.

Nota:

Use el comando Navegar hacia atrás del menú Vista (CTRL+-) para volver a la instrucción de enlace de eventos.