Bất kỳ thông số nào thuộc loại T*
(trong đó T
là loại ABI hợp pháp) sẽ được trình biên dịch xử lý như tham số ngoài và được trang trí trong siêu dữ liệu như vậy. Các mã sau đây:
namespace TestMakePublic {
public ref class Class1 sealed
{
public:
void foo(int* out1, Object^* out2){}
};
}
Tạo một hàm trong siêu dữ liệu mà trông như thế này (đầu ra ildasm):
.method public hidebysig newslot virtual final
instance void foo([out] int32& out1,
[out] object& out2) runtime managed
{
.override TestMakePublic.__IClass1PublicNonVirtuals::foo
} // end of method Class1::foo
Lưu ý rằng WinRT không không hỗ trợ "in/out" các thông số, vì vậy giá trị của out1
và out2
chỉ hợp lệ để trả lại từ hàm và không thể tin cậy làm đầu vào cho foo
.
Nguồn
2013-04-12 19:48:57
Đây là các chú thích SAL và chỉ ảnh hưởng đến phân tích mã tĩnh. Trong trình biên dịch bình thường, họ đánh giá không có gì. –