兴冲冲的写了个func(parms int [] kk)的方法,结果以func(var1,var2,var3)形式调用时根本不能回传参数值。那么错在哪里呢?定义个多维数组:
int []kk=new int[]{1,2,3,4};
若以func(kk)方式调用,在func中改变kk[0]的值时,返回后kk[0]值也跟着改变。
然后若以func(kk[0],kk[1],kk[2])形式调用,则打印出来的kk[0]值还是初始化时的值,这就是当时自己犯错的地方。显然func(kk)是传入了地址,而func(kk[0],kk[1])还是以值方式传递的。
那么能否象C/C++中一样,用&kk[0]来取得首地址呢,如func(&kk[0])?试验结果是不行,string*和string[]显然在C#中是无法任意转换的。而指针操作也只能在非托管代码中使用。
若是用ref/out kk[0]形式调用func方法如何呢?也不行,因为ref/out在声明和调用时都要使用。而parms和ref/out是互斥的。因而方法声明时不能同时使用parms和ref/out。
看来还是只能用数组形式返回多个参数了。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/187.html