2010-03-05 15 views
12

¿Cuál es el modificador externo del constructor Propósito de C#?Propósito del modificador extern del constructor C#

Conozco el uso de MÉTODOS externos para invocar funciones de Win32, pero ¿qué hay de CONSTRUCTORS?

Por favor, dé el ejemplo práctico.

Nota esto:

class MyClass 
{ 
    public extern MyClass(); 
} 
+1

Por favor, da un ejemplo de lo que quieres decir. –

+0

Pensé que la versión de MSDN de la definición y el ejemplo ayudaría? http://msdn.microsoft.com/en-us/library/e59b22c5%28VS.80%29.aspx –

+1

Pero eso no funciona en los constructores, tal vez esa es su pregunta, pero no estoy seguro, por lo tanto quiero él para elaborar. –

Respuesta

1

El C# spec here indica que, aparte de privada, interna, protegida y pública, extern se pueden utilizar y que esta es la referencia externa estándar - ver here. Esto para mí dice que el contstructor está vinculado a la clase en un momento posterior. Al igual que las llamadas PInvoke son. No hay nada, supongo, deteniendo el implementador del compilador de C# que permite la vinculación de los módulos de .net externos que contienen dichos constructores externos.

No puedo dar un ejemplo, pero sospecho que una forma sería implementar el constructor en MC++, o de hecho solo un simple IL module.

6

Creo que un uso/propósito de un controlador externo es tener el constructor implementado dentro del CLR mismo. si se desmonta mscorlib.dll usando Reflector y mirar el tipo System.String, verá:

[MethodImpl(MethodImplOptions.InternalCall)] 
public extern String(char[] value); 

Lo que básicamente nos dice que el ctor para la clase de cadena (char []) se lleva a cabo externamente, como parte del tiempo de ejecución .net.