我有一个C#程序,调用了一个名为test
的COM DLL方法,该方法有两个参数:第一个参数是通过ByVal
传递的,第二个参数是通过ByRef
传递的。
这就是COM DLL的功能:
Public Sub test(ByVal a As String, ByRef b As String)
a = "a"
b = "b"
End Sub
以下是C#程序的功能:
test.Class1 x = new test.Class1();
string a = "1";
string b = "2";
x.test(a, ref b);
我注意到如果我删除ref
关键字,编译器不会提醒我错过了ref
关键字并传递ByVal
参数。如果我错过了ref
关键字,这可能是一个大问题,因为我只能在知道它需要ref
之前才能注意到它。你知道为什么编译器会展现这种行为吗?