VB 参数传递:按值传递和按地址传递
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB 参数传递:按值传递和按地址传递相关的知识,希望对你有一定的参考价值。
参考技术A vb默认的是按地址传递,也就是说按地址传递是形参和实参共享同一内存单元,如在hcf(x,y)中,x和y与m和n其实是同一变量,当mn改变时xy也改变,一次hcf函数过程下来m=24,n=4,也就是说x=24,y=4,所以在label2.caption
=
x
&
","
&
y
&
"中,出现了24,4
而用括号的话就是表示按值传递,vb会为mn另外分配内存单元,mn值的改变并不会影响xy的值,所以下面那个label2.caption
=
m
&
","
&
n
&
"中,依然是136.28 参考技术B 问题一
参数按地址传递,输出结果为什么是“8”,而不是“9”。因为变量a没作为参数传递。改s
(a)为s
a
或Print
(a)试试。
问题二
参数传递的数量不是只能一个
比如:
s(byval
a,byref
b)可以的
C#基础按值和按引用传递参数
public static void ChaneA(A a){a.X= 2;}
static void Main(){ Aa1 = new A {x = 1 };
ChangeA(a1);
Console.WriteLine($”a1.X:{a1.X}”);
public struct A{ publicint X{get;set;}}
public class A{ public int X{get;set;}}
publicstatic void ChangeA(ref A a){ a.x = 2;}
Staticvoid Main()
{
A a1 = new A{X = 1};
ChangeA(ref a1);
Console.WriteLine($”a1.X:{a1.X}”);
}
由于结构也按引用类型传递,所以结果是2。
publicstatic void ChangeA(ref A a)
{
a.X = 2;
a= new A{X = 3};
}
把A作为类类型,使用ref修饰符,传递对引用的引用,它允许分配一个新对象,Main()方法显示了结果3。
Stringinput1 = ReadLine();
If(int.TryParse(input1,outint result1))
{
Console.WriteLine($”result:{result1}”);
}
else
{
Console.WriteLine(“not a number”);
}
以上是关于VB 参数传递:按值传递和按地址传递的主要内容,如果未能解决你的问题,请参考以下文章