2010-03-05 25 views
12

Mục đích của công cụ sửa đổi extern của C# constructor là gì?Mục đích của công cụ sửa đổi bên ngoài C# constructor

Tôi biết về cách sử dụng METHODS bên ngoài để gọi các hàm Win32, nhưng còn về CONSTRUCTORS thì sao?

Vui lòng cung cấp ví dụ thực tế.

Lưu ý này:

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

Vui lòng cho ví dụ về ý của bạn. –

+0

Tôi nghĩ rằng phiên bản MSDN của định nghĩa và ví dụ sẽ giúp ích? http://msdn.microsoft.com/en-us/library/e59b22c5%28VS.80%29.aspx –

+1

Nhưng điều đó không hiệu quả đối với các nhà xây dựng, có lẽ đó là câu hỏi của anh ấy, nhưng tôi không chắc chắn, vì vậy tôi muốn anh ta để xây dựng. –

Trả lời

1

Các C# đặc tả here chỉ ra rằng ngoài việc tư nhân, nội bộ, bảo vệ và công cộng, extern có thể được sử dụng và rằng đây là tiêu chuẩn bên ngoài tham khảo - xem here. Điều này với tôi nói rằng các contstructor được liên kết vào các lớp học tại một thời gian sau đó. Cũng giống như các cuộc gọi PInvoke. Không có gì, tôi đoán, dừng trình biên dịch C# trình biên dịch cho phép liên kết các .modules bên ngoài có chứa các hàm tạo bên ngoài.

Tôi không thể đưa ra một ví dụ, nhưng tôi nghi ngờ có một cách để thực hiện hàm tạo trong MC++, hoặc trên thực tế chỉ đơn giản là một .module.

6

Tôi tin rằng một mục đích sử dụng/mục đích của một ctor bên ngoài là phải có hàm tạo được thực hiện trong chính CLR. nếu bạn tháo rời mscorlib.dll sử dụng Reflector và nhìn vào kiểu System.String, bạn sẽ thấy:

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

Mà về cơ bản cho chúng ta biết rằng (char []) ctor cho lớp chuỗi được thực hiện bên ngoài, như một phần của thời gian chạy .net.

Các vấn đề liên quan