Tôi biết rằng mã C++/CLIref và out trong C++/CLI
void foo(Bar^% x);
biến thành
Void foo(ref Bar x);
gì là mã C++/CLI đó trở thành
Void foo(out Bar x);
?
Tôi biết rằng mã C++/CLIref và out trong C++/CLI
void foo(Bar^% x);
biến thành
Void foo(ref Bar x);
gì là mã C++/CLI đó trở thành
Void foo(out Bar x);
?
Bạn có thể sử dụng OutAttribute:
using namespace System::Runtime::InteropServices;
void foo([Out] Bar^% x);
Không có cú pháp cụ thể như vậy trong C++/CLI. Tôi nghĩ rằng bạn có thể nhận được khá gần bằng cách thêm OutAttribute
để sửa đổi tham số. Nhưng tôi không chắc chắn rằng đạt được các ngữ nghĩa chính xác giống như C# out
.
Khái niệm về out
là phần lớn được giới hạn ở C#. CLR chỉ thực sự nhìn thấy thông số ref
. Các khái niệm out
đạt được thông qua một lựa chọn mod tôi tin và hầu hết các ngôn ngữ bỏ qua nó.
Yup, tương tự cho VB.NET –
Đây là pass-by-reference cú pháp với 'OutAttribute' áp dụng cho các tham số như bạn nói. Nó tạo ra cùng một siêu dữ liệu giống như các tham số C# 'out'. Bởi "không ... chính xác cùng ngữ nghĩa" là bạn đề cập đến một thực tế là trong C# tham số bắt đầu ra uninitialized và phải được chắc chắn được giao trước khi trả về chức năng? –