Un extern es algo que se define externamente al módulo actual. Podría usar extern en caso de que su declaración venga más tarde, o incluso cuando su declaración esté en algún otro archivo, aún no encontrada.
[AHORRÁNDOLE ESFUERZO -> líneas de abajo son de Wikipedia]
Cuando se define una variable, le está diciendo al compilador para asignar memoria para esa variable, y posiblemente también para inicializar su contenido a un cierto valor.
Cuando declara una variable, le está diciendo al compilador que la variable se definió en otro lugar.
Usted le está diciendo al compilador que existe una variable con ese nombre y tipo, pero el compilador no debe asignarle memoria, ya que se realiza en otro lugar.
La palabra clave extern significa "declarar sin definir". En otras palabras, es una manera de declarar explícitamente una variable, o forzar una declaración sin definición.
Leer más: http://wiki.answers.com/Q/What_is_the_use_of_extern_in_C#ixzz1OzrWVmAC
¿Por qué le daría un error? – Marcin