Tabla de contenido detallada
- Prefacio
- Introducción
- §1 Ámbito
- §2 Referencias normativas
- §3 Términos y definiciones
- §4 Descripción general
- §5 Conformidad
- §6 Estructura léxica
- §6.1 Programas
- §6.2 Gramáticas
- §6.3 Análisis léxico
- §6.3.1 General
- Terminadores de línea §6.3.2
- §6.3.3 Comentarios
- §6.3.4 Espacio en blanco
- §6.4 Tokens
- §6.5 Directivas de preprocesamiento
- §6.5.1 General
- §6.5.2 Símbolos de compilación condicional
- §6.5.3 Expresiones de preprocesamiento
- §6.5.4 Directivas de definición
- §6.5.5 Directivas de compilación condicional
- §6.5.6 Directivas de diagnóstico
- §6.5.7 Directivas de región
- §6.5.8 Directivas de línea
- §6.5.9 Directiva que acepta valores NULL
- §6.5.10 Directivas Pragma
- §7 Conceptos básicos
- §8 Tipos
- §8.1 General
- §8.2 Tipos de referencia
- §8.2.1 General
- §8.2.2 Tipos de clase
- §8.2.3 Tipo de objeto
- §8.2.4 Tipo dinámico
- §8.2.5 Tipo de cadena
- §8.2.6 Tipos de interfaz
- §8.2.7 Tipos de matriz
- §8.2.8 Tipos delegados
- §8.3 Tipos de valor
- §8.3.1 General
- §8.3.2 El tipo System.ValueType
- §8.3.3 Constructores predeterminados
- §8.3.4 Tipos de estructura
- §8.3.5 Tipos simples
- §8.3.6 Tipos enteros
- §8.3.7 Tipos de punto flotante
- §8.3.8 El tipo decimal
- §8.3.9 El tipo bool
- §8.3.10 Tipos de enumeración
- §8.3.11 Tipos de tupla
- §8.3.12 Tipos de valor que aceptan valores NULL
- §8.3.13 Boxing y unboxing
- §8.4 Tipos construidos
- §8.5 Parámetros de tipo
- §8.6 Tipos de árbol de expresión
- §8.7 El tipo dinámico
- §8.8 Tipos no administrados
- §8.9 Tipos de referencia y nulabilidad
- §8.9.1 General
- §8.9.2 Tipos de referencia que no aceptan valores NULL
- §8.9.3 Tipos de referencia que aceptan valores NULL
- §8.9.4 Contexto que acepta valores NULL
- §8.9.5 Valores NULLabilities y estados NULL
- §9 Variables
- §9.1 General
- §9.2 Categorías de variables
- §9.3 Valores predeterminados
- §9.4 Asignación definitiva
- §9.4.1 General
- §9.4.2 Variables asignadas inicialmente
- §9.4.3 Variables sin asignar inicialmente
- §9.4.4 Reglas precisas para determinar la asignación definitiva
- §9.4.4.1 General
- §9.4.4.2 Reglas generales para instrucciones
- §9.4.4.3 Instrucciones de bloque, activadas y desactivadas
- §9.4.4.4 Instrucciones de expresión
- §9.4.4.5 Declaraciones de declaración
- §9.4.4.6 Instrucciones If
- §9.4.4.7 Instrucciones switch
- §9.4.4.8 Instrucciones while
- §9.4.4.9 Instrucciones Do
- §9.4.4.10 Instrucciones For
- §9.4.4.11 Instrucciones break, continue y goto
- §9.4.4.12 Instrucciones Throw
- §9.4.4.13 Instrucciones de devolución
- §9.4.4.14 Instrucciones Try-catch
- §9.4.4.15 Instrucciones Try-finally
- §9.4.4.16 Instrucciones Try-catch-finally
- §9.4.4.17 Instrucciones Foreach
- §9.4.4.18 Instrucciones Using
- §9.4.4.19 Instrucciones lock
- §9.4.4.20 Instrucciones Yield
- §9.4.4.21 Reglas generales para expresiones constantes
- §9.4.4.22 Reglas generales para expresiones simples
- §9.4.4.23 Reglas generales para expresiones con expresiones insertadas
- §9.4.4.24 Expresiones de invocación y expresiones de creación de objetos
- §9.4.4.25 Expresiones de asignación simple
- §9.4.4.26 && expresiones
- §9.4.4.27 || expresiones
- §9.4.4.28 ! expresiones
- §9.4.4.29 ?? expresiones
- §9.4.4.30 ?: expresiones
- §9.4.4.31 Funciones anónimas
- §9.4.4.32 Expresiones throw
- §9.4.4.33 Reglas para variables en funciones locales
- §9.4.4.34 expresiones is-pattern
- Referencias a variables §9.5
- §9.6 Atomicity of variable references
- §9.7 Variables de referencia y devuelve
- §9.7.1 General
- §9.7.2 Contextos seguros ref
- §9.7.2.1 General
- §9.7.2.2 Contexto seguro de variables locales ref
- §9.7.2.3 Contexto seguro de referencia de parámetros
- §9.7.2.4 Contexto seguro de referencia de campo
- §9.7.2.5 Operadores
- §9.7.2.6 Invocación de función
- §9.7.2.7 Valores
- §9.7.2.8 Invocaciones del constructor
- §9.7.2.9 Limitaciones de las variables de referencia
- §10 Conversiones
- §10.1 General
- §10.2 Conversiones implícitas
- §10.2.1 General
- §10.2.2 Conversión de identidad
- §10.2.3 Conversiones numéricas implícitas
- §10.2.4 Conversiones implícitas de enumeración
- §10.2.5 Conversiones implícitas de cadenas interpoladas
- §10.2.6 Conversiones implícitas que aceptan valores NULL
- §10.2.7 Conversiones literales null
- §10.2.8 Conversiones implícitas de referencia
- §10.2.9 Conversiones boxing
- §10.2.10 Conversiones dinámicas implícitas
- §10.2.11 Conversiones de expresiones constantes implícitas
- §10.2.12 Conversiones implícitas que implican parámetros de tipo
- §10.2.13 Conversiones implícitas de tupla
- §10.2.14 Conversiones implícitas definidas por el usuario
- §10.2.15 Conversiones de funciones anónimas y conversiones de grupo de métodos
- §10.2.16 Conversiones literales predeterminadas
- §10.2.17 Conversiones implícitas de lanzamiento
- §10.3 Conversiones explícitas
- §10.3.1 General
- §10.3.2 Conversiones numéricas explícitas
- §10.3.3 Conversiones de enumeración explícitas
- §10.3.4 Conversiones explícitas que aceptan valores NULL
- §10.3.5 Conversiones de referencia explícitas
- §10.3.6 Conversiones explícitas de tupla
- §10.3.7 Conversiones de unboxing
- §10.3.8 Conversiones explícitas que implican parámetros de tipo
- §10.3.9 Conversiones explícitas definidas por el usuario
- §10.4 Conversiones estándar
- §10.5 Conversiones definidas por el usuario
- §10.6 Conversiones que implican tipos que aceptan valores NULL
- §10.7 Conversiones de funciones anónimas
- §10.8 Conversiones de grupo de métodos
- §11 Patrones y coincidencia de patrones
- §12 Expresiones
- §12.1 General
- §12.2 Clasificaciones de expresiones
- §12.3 Enlace estático y dinámico
- §12.3.1 General
- §12.3.2 Tiempo de enlace
- §12.3.3 Enlace dinámico
- §12.3.4 Tipos de subexpresiones
- §12.4 Operadores
- §12.4.1 General
- §12.4.2 Precedencia y asociatividad del operador
- Sobrecarga del operador §12.4.3
- §12.4.4 Resolución de sobrecarga del operador unario
- §12.4.5 Resolución de sobrecarga del operador binario
- §12.4.6 Operadores definidos por el usuario candidatos
- §12.4.7 Promociones numéricas
- §12.4.8 Operadores de elevación
- Búsqueda de miembros §12.5
- §12.6 Miembros de la función
- §12.6.1 General
- §12.6.2 Listas de argumentos
- §12.6.3 Inferencia de tipos
- §12.6.3.1 General
- §12.6.3.2 La primera fase
- §12.6.3.3 La segunda fase
- §12.6.3.4 Tipos de entrada
- §12.6.3.5 Tipos de salida
- §12.6.3.6 Dependencia
- §12.6.3.7 Inferencias de tipo de salida
- §12.6.3.8 Inferencias de tipo de parámetro explícito
- §12.6.3.9 Inferencias exactas
- §12.6.3.10 Inferencias enlazadas a inferior
- §12.6.3.11 Inferencias enlazadas superior
- §12.6.3.12 Corrección
- §12.6.3.13 Tipo de valor devuelto inferido
- §12.6.3.14 Inferencia de tipos para la conversión de grupos de métodos
- §12.6.3.15 Búsqueda del mejor tipo común de un conjunto de expresiones
- §12.6.4 Resolución de sobrecarga
- §12.6.4.1 General
- §12.6.4.2 Miembro de función aplicable
- §12.6.4.3 Miembro de función Better
- §12.6.4.4 Mejor modo de paso de parámetros
- §12.6.4.5 Mejor conversión a partir de la expresión
- §12.6.4.6 Expresión exactamente coincidente
- §12.6.4.7 Mejor destino de conversión
- §12.6.4.8 Sobrecargado en clases genéricas
- §12.6.5 Comprobación en tiempo de compilación de la invocación de miembros dinámicos
- §12.6.6 Invocación de miembro de función
- §12.7 Deconstrucción
- §12.8 Expresiones principales
- §12.8.1 General
- §12.8.2 Literales
- §12.8.3 Expresiones de cadena interpoladas
- §12.8.4 Nombres simples
- §12.8.5 Expresiones paréntesisized
- §12.8.6 Expresiones de tupla
- Acceso a miembros §12.8.7
- §12.8.8 Acceso de miembro condicional nulo
- §12.8.9 Expresiones que admiten valores NULL
- §12.8.9.1 General
- §12.8.9.2 Invalidar una determinación "tal vez nula"
- §12.8.9.3 Invalidación de otras advertencias de análisis null
- §12.8.10 Expresiones de invocación
- §12.8.10.1 General
- §12.8.10.2 Invocaciones del método
- §12.8.10.3 Invocaciones de método de extensión
- §12.8.10.4 Invocaciones de delegado
- §12.8.11 Expresión de invocación condicional nula
- Acceso al elemento §12.8.12
- §12.8.12.1 General
- §12.8.12.2 Acceso a la matriz
- §12.8.12.3 Acceso al indexador
- §12.8.13 Acceso a elementos condicionales NULL
- §12.8.14 Este acceso
- §12.8.15 Acceso base
- §12.8.16 Operadores de incremento y decremento postfijo
- §12.8.17 El nuevo operador
- §12.8.17.1 General
- §12.8.17.2 Expresiones de creación de objetos
- §12.8.17.3 Inicializadores de objeto
- §12.8.17.4 Inicializadores de colección
- §12.8.17.5 Expresiones de creación de matrices
- §12.8.17.6 Expresiones de creación de delegados
- §12.8.17.7 Expresiones de creación de objetos anónimos
- §12.8.18 El operador typeof
- §12.8.19 El operador sizeof
- §12.8.20 Los operadores comprobados y no comprobados
- §12.8.21 Expresiones de valor predeterminadas
- §12.8.22 Asignación de pila
- §12.8.23 El operador nameof
- §12.8.24 Expresiones de método anónimo
- §12.9 Operadores unarios
- §12.9.1 General
- §12.9.2 Operador unary plus
- §12.9.3 Operador menos unario
- §12.9.4 Operador de negación lógica
- §12.9.5 Operador de complemento bit a bit
- §12.9.6 Operadores de incremento y decremento de prefijo
- §12.9.7 Expresiones cast
- §12.9.8 Expresiones await
- §12.9.8.1 General
- §12.9.8.2 Expresiones awaitables
- §12.9.8.3 Clasificación de expresiones await
- §12.9.8.4 Evaluación en tiempo de ejecución de expresiones await
- §12.10 Operadores aritméticos
- §12.10.1 General
- §12.10.2 Operador de multiplicación
- Operador de división §12.10.3
- §12.10.4 Operador de resto
- Operador de adición §12.10.5
- §12.10.6 Operador de resta
- §12.11 Operadores de desplazamiento
- §12.12 Operadores relacionales y de prueba de tipos
- §12.12.1 General
- §12.12.2 Operadores de comparación de enteros
- §12.12.3 Operadores de comparación de punto flotante
- §12.12.4 Operadores de comparación decimales
- §12.12.5 Operadores de igualdad booleanos
- §12.12.6 Operadores de comparación de enumeración
- §12.12.7 Operadores de igualdad de tipos de referencia
- §12.12.8 Operadores de igualdad de cadenas
- §12.12.9 Operadores de igualdad de delegado
- §12.12.10 Operadores de igualdad entre tipos de valor que aceptan valores NULL y el literal NULL
- §12.12.11 Operadores de igualdad de tupla
- §12.12.12 El operador is
- §12.12.12.1 El operador is-type
- §12.12.12.2 El operador is-pattern
- §12.12.13 Operador as
- §12.13 Operadores lógicos
- §12.14 Operadores lógicos condicionales
- §12.15 Operador de fusión null
- §12.16 Operador de expresión throw
- §12.17 Expresiones de declaración
- §12.18 Operador condicional
- §12.19 Expresiones de función anónimas
- §12.19.1 General
- §12.19.2 Firmas anónimas de función
- §12.19.3 Cuerpos de función anónimos
- §12.19.4 Resolución de sobrecarga
- §12.19.5 Funciones anónimas y enlace dinámico
- §12.19.6 Variables externas
- §12.19.6.1 General
- §12.19.6.2 Variables externas capturadas
- §12.19.6.3 Creación de instancias de variables locales
- §12.19.7 Evaluación de expresiones de función anónimas
- Ejemplo de implementación de §12.19.8
- §12.20 Expresiones de consulta
- §12.20.1 General
- §12.20.2 Ambigüedades en expresiones de consulta
- §12.20.3 Traducción de expresiones de consulta
- §12.20.3.1 General
- §12.20.3.2 Expresiones de consulta con continuaciones
- §12.20.3.3 Tipos de variables de rango explícitos
- §12.20.3.4 Degenerar expresiones de consulta
- §12.20.3.5 Desde, let, where, join y orderby cláusulas
- §12.20.3.6 Cláusulas Select
- §12.20.3.7 Cláusulas group
- §12.20.3.8 Identificadores transparentes
- §12.20.4 El patrón query-expression
- §12.21 Operadores de asignación
- Expresión §12.22
- §12.23 Expresiones constantes
- §12.24 Expresiones booleanas
- §13 Instrucciones
- §13.1 General
- §13.2 Puntos finales y accesibilidad
- §13.3 Bloques
- §13.4 La instrucción vacía
- §13.5 Instrucciones etiquetadas
- §13.6 Instrucciones de declaración
- §13.7 Instrucciones de expresión
- §13.8 Instrucciones selection
- §13.9 Instrucciones de iteración
- §13.10 Instrucciones jump
- §13.11 La instrucción try
- §13.12 Las instrucciones activadas y desactivadas
- §13.13 La instrucción lock
- §13.14 Instrucción using
- §13.15 Instrucción yield
- §14 Espacios de nombres
- §14.1 General
- §14.2 Unidades de compilación
- §14.3 Declaraciones de espacio de nombres
- §14.4 Directivas de alias extern
- §14.5 Uso de directivas
- §14.5.1 General
- §14.5.2 Uso de directivas de alias
- §14.5.3 Uso de directivas de espacio de nombres
- §14.5.4 Uso de directivas estáticas
- §14.6 Declaraciones de miembro de espacio de nombres
- §14.7 Declaraciones de tipo
- §14.8 Miembro de alias calificado
- §15 Clases
- §15.1 General
- §15.2 Declaraciones de clase
- §15.2.1 General
- §15.2.2 Modificadores de clase
- §15.2.2.1 General
- §15.2.2.2 Clases abstractas
- §15.2.2.3 Clases selladas
- §15.2.2.4 Clases estáticas
- §15.2.2.4.1 General
- §15.2.2.4.2 Hacer referencia a tipos de clase estática
- §15.2.3 Parámetros de tipo
- §15.2.4 Especificación base de clase
- §15.2.5 Restricciones de parámetro de tipo
- §15.2.6 Cuerpo de clase
- §15.2.7 Declaraciones parciales
- §15.3 Miembros de la clase
- §15.3.1 General
- §15.3.2 El tipo de instancia
- §15.3.3 Miembros de tipos construidos
- §15.3.4 Herencia
- §15.3.5 El nuevo modificador
- §15.3.6 Modificadores de acceso
- §15.3.7 Tipos constituyentes
- §15.3.8 Miembros estáticos e instancias
- §15.3.9 Tipos anidados
- §15.3.10 Nombres de miembros reservados
- §15.3.10.1 General
- §15.3.10.2 Nombres de miembros reservados para las propiedades
- §15.3.10.3 Nombres de miembros reservados para eventos
- §15.3.10.4 Nombres de miembros reservados para indexadores
- §15.3.10.5 Nombres de miembros reservados para los finalizadores
- §15.3.10.6 Nombres de método reservados para operadores
- §15.4 Constantes
- §15.5 Campos
- §15.6 Métodos
- §15.6.1 General
- §15.6.2 Parámetros del método
- §15.6.2.1 General
- §15.6.2.2 Parámetros de valor
- §15.6.2.3 Parámetros por referencia
- §15.6.2.3.1 General
- §15.6.2.3.2 Parámetros de entrada
- §15.6.2.3.3 Parámetros de referencia
- §15.6.2.3.4 Parámetros de salida
- §15.6.2.4 Matrices de parámetros
- §15.6.3 Métodos estáticos e de instancia
- §15.6.4 Métodos virtuales
- §15.6.5 Métodos de invalidación
- §15.6.6 Métodos sellados
- §15.6.7 Métodos abstractos
- §15.6.8 Métodos externos
- §15.6.9 Métodos parciales
- §15.6.10 Métodos de extensión
- §15.6.11 Cuerpo del método
- §15.7 Propiedades
- §15.8 Eventos
- §15.8.1 General
- §15.8.2 Eventos similares a campos
- Descriptores de acceso de eventos §15.8.3
- §15.8.4 Eventos estáticos e de instancia
- §15.8.5 Descriptores de acceso virtuales, sellados, invalidaciones y abstractos
- §15.9 Indexadores
- §15.9.1 General
- §15.9.2 Indexador y diferencias de propiedad
- §15.10 Operadores
- §15.11 Constructores de instancia
- §15.12 Constructores estáticos
- §15.13 Finalizadores
- §15.14 Iteradores
- §15.14.1 General
- §15.14.2 Interfaces del enumerador
- §15.14.3 Interfaces enumerables
- §15.14.4 Tipo de rendimiento
- §15.14.5 Objetos enumeradores
- §15.14.5.1 General
- §15.14.5.2 El método MoveNext
- §15.14.5.3 La propiedad Current
- §15.14.5.4 El método Dispose
- §15.14.6 Objetos enumerables
- §15.14.6.1 General
- §15.14.6.2 El método GetEnumerator
- §15.15 Funciones asincrónicas
- §16 Structs
- §16.1 General
- Declaraciones de struct §16.2
- §16.2.1 General
- Modificadores de estructura §16.2.2
- §16.2.3 Modificador Ref
- §16.2.4 Modificador parcial
- Interfaces de struct §16.2.5
- §16.2.6 Cuerpo de estructura
- §16.3 Miembros de Struct
- §16.4 Diferencias de clase y estructura
- §16.4.1 General
- §16.4.2 Semántica de valores
- §16.4.3 Herencia
- §16.4.4 Asignación
- §16.4.5 Valores predeterminados
- §16.4.6 Boxing y unboxing
- §16.4.7 Significado de esto
- §16.4.8 Inicializadores de campo
- §16.4.9 Constructores
- §16.4.10 Constructores estáticos
- §16.4.11 Propiedades implementadas automáticamente
- §16.4.12 Restricción de contexto seguro
- §16.4.12.1 General
- §16.4.12.2 Contexto seguro de parámetros
- §16.4.12.3 Contexto seguro de variables locales
- §16.4.12.4 Contexto seguro del campo
- §16.4.12.5 Operadores
- §16.4.12.6 Invocación de método y propiedad
- §16.4.12.7 stackalloc
- §16.4.12.8 Invocaciones del constructor
- §17 Matrices
- §18 Interfaces
- §18.1 General
- §18.2 Declaraciones de interfaz
- §18.3 Cuerpo de la interfaz
- §18.4 Miembros de la interfaz
- §18.5 Nombres de miembros de interfaz calificados
- §18.6 Implementaciones de interfaz
- §18.6.1 General
- §18.6.2 Implementaciones explícitas de miembros de interfaz
- §18.6.3 Unicidad de las interfaces implementadas
- §18.6.4 Implementación de métodos genéricos
- Asignación de la interfaz §18.6.5
- §18.6.6 Herencia de implementación de la interfaz
- §18.6.7 Implementación de la interfaz
- §18.6.8 Clases e interfaces abstractas
- §19 Enumeraciones
- §20 Delegados
- §21 Excepciones
- §22 Atributos
- §22.1 General
- §22.2 Clases de atributos
- §22.2.1 General
- §22.2.2 Uso de atributos
- §22.2.3 Parámetros posicionales y con nombre
- §22.2.4 Tipos de parámetros de atributo
- §22.3 Especificación del atributo
- §22.4 Instancias de atributo
- §22.5 Atributos reservados
- §22.5.1 General
- §22.5.2 El atributo AttributeUsage
- §22.5.3 El atributo condicional
- §22.5.4 El atributo Obsoleto
- §22.5.5 El atributo AsyncMethodBuilder
- §22.5.6 Atributos de información de llamada
- §22.5.7 Atributos de análisis de código
- §22.5.7.1 General
- §22.5.7.2 El atributo AllowNull
- §22.5.7.3 El atributo DisallowNull
- §22.5.7.4 El atributo DoesNotReturn
- §22.5.7.5 El atributo DoesNotReturnIf
- §22.5.7.6 El atributo MaybeNull
- §22.5.7.7 El atributo MaybeNullWhen
- §22.5.7.8 El atributo NotNull
- §22.5.7.9 El atributo NotNullIfNotNull
- §22.5.7.10 El atributo NotNullWhen
- §22.6 Atributos para la interoperación
- §23 Código no seguro
- §Una gramática
- §B Problemas de portabilidad
- Biblioteca estándar de §C
- §C.1 General
- §C.2 Tipos de biblioteca estándar definidos en ISO/IEC 23271
- §C.3 Tipos de biblioteca estándar no definidos en ISO/IEC 23271
- §C.4 Especificaciones de formato
- Abreviaturas de tipo de biblioteca §C.5
- Comentarios de documentación de §D
- §D.1 General
- Introducción a §D.2
- §D.3 Etiquetas recomendadas
- §D.3.1 General
- §D.3.2<c>
- §D.3.3<código>
- Ejemplo de §D.3.4<>
- Excepción §D.3.5<>
- §D.3.6<incluye>
- Lista §D.3.7<>
- §D.3.8<para>
- §D.3.9<param>
- §D.3.10<paramref>
- Permiso §D.3.11<>
- Comentarios de §D.3.12<>
- §D.3.13<devuelve>
- §D.3.14<consulte>
- §D.3.15<seealso>
- Resumen de §D.3.16<>
- §D.3.17<typeparam>
- §D.3.18<typeparamref>
- Valor §D.3.19<>
- §D.4 Procesamiento del archivo de documentación
- §D.4.1 General
- §D.4.2 Formato de cadena de identificador
- Ejemplos de cadenas de identificador de §D.4.3
- §D.5 Un ejemplo
- §D.5.1 Código fuente de C#
- §D.5.2 XML resultante
- §E Bibliografía
Colaborar con nosotros en GitHub
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
ECMA C# draft specification