Trong C# .NET, có cách nào để truyền số lượng đối tượng biến đổi làm đối tượng tham chiếu không? Ví dụ:C# chuyển số biến tham số tham chiếu
MyMethod (ref param1, ref param2, ref param3)
... với số lượng tham số, loại khác nhau.
Trong C# .NET, có cách nào để truyền số lượng đối tượng biến đổi làm đối tượng tham chiếu không? Ví dụ:C# chuyển số biến tham số tham chiếu
MyMethod (ref param1, ref param2, ref param3)
... với số lượng tham số, loại khác nhau.
Không, điều này là không thể: số lượng đối số biến được thực hiện dưới dạng "đường cú pháp" trên đầu trang của việc truyền mảng; không thể tạo ra một mảng các tham số pass-by-reference, bởi vì "được truyền bởi tham chiếu" không phải là một thuộc tính của một kiểu.
Bạn có thể, nếu bạn sẵn sàng sử dụng các từ khóa không có giấy tờ __arglist
và __refvalue
từ khóa trong C#.
Thận trọng: Tính năng không có giấy tờ có thể thay đổi trong các phiên bản sau của C#. Chỉ sử dụng những từ khóa này nếu bạn có, hiểu rằng mã của bạn có thể ngừng hoạt động nếu Microsoft thay đổi hành vi của chúng trong phiên bản tiếp theo.
Ví dụ: chương trình sau chuyển ba số int
bằng tham chiếu đến phương pháp GetRandomValues
. Nó xuất ra 2, 1 và 4, chứng minh rằng các biến đã được sửa đổi thành công.
static void Main()
{
int x = 0, y = 0, z = 0;
GetRandomValues(__arglist(ref x, ref y, ref z));
Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(z);
}
static void GetRandomValues(__arglist)
{
Random random = new Random(1);
ArgIterator iterator = new ArgIterator(__arglist);
while (iterator.GetRemainingCount() > 0)
{
TypedReference r = iterator.GetNextArg();
__refvalue(r, int) = random.Next(0, 10);
}
}