El tipo de función local se asemeja al tipo de función de contenedor; sin embargo, no existe una norma o aplicación estricta por parte del compilador. Cuando se tiene una función local se pueden utilizar los modificadores async y unsafe .
No se puede definir una función local en un miembro con cuerpo de expresión. El propósito de la función local es hacer su programa más legible, y se le impide llamar la función local por error ya que no puede llamarla directamente. No se puede utilizar la palabra clave estática en las funciones locales, y no se pueden aplicar atributos a una función local o a uno de sus parámetros o tipo de parámetro.
Lugares comunes donde se definen las funciones locales:
- Métodos
- Constructores
- Accesores de propiedad
- Accesorio de eventos
- Expresiones lambda
- Finalizadores, también conocidos como destructores
- Funciones locales (lo que significa que las funciones locales pueden anidarse entre sí)
Una característica útil de las funciones locales es que permiten que las excepciones salgan a la superficie inmediatamente. Cuando se utilizan iteradores, por ejemplo, las excepciones sólo salen a la superficie cuando se enumeran.