在这里,我理解本地vaiables的含义。 但是我的SecondVar做了什么? 没有方法2将myValue提供给我的SecondVar?
这些代码意味着设置"某些东西"作为myVar到method2中的myValue,那么mySecondVar的功能在这里是什么?
private void method1()
{
// This is a local variable called myVar
string myVar = "something";
string mySecondVar = method2(myVar);
}
private string method2(string myValue)
{
// This method has received myVar from method1 as "myValue"
return myValue;
}
答案 0 :(得分:1)
两者都是局部变量。根据您的代码,两者都具有相同的值。 mySecondVar
间接获得myVar
的值。
答案 1 :(得分:1)
string mySecondVar = method2(myVar);
这行代码调用method2,传递myVar,并将方法调用的返回值赋给mySecondVar。通常,在返回之前,method2实际上会对值执行某些操作。在这个例子中它没有做任何事情,所以你最终得到了分配给mySecondVar的“东西”。
答案 2 :(得分:0)
两者都是局部变量,因为它们在相同范围中声明。
string myVar = "something";
在这里,您直接将myVar初始化为某个值。
string mySecondVar = method2(myVar);
在这里,您正在确定method2()
返回mySecondVar
的值。 method2()
会返回myVar
的值而不对其执行任何操作,因此mySecondVar
也会初始化为与myVar
相同的值。
答案 3 :(得分:0)
方法2唯一要做的就是在你的情况下接受字符串值“something”,并将相同的值“something”返回给mysecondvar。它严格地接受一个字符串并返回相同的字符串。
答案 4 :(得分:0)
这只是为了说明函数将返回它应该返回的类型的值。
在这种情况下,函数method2是一个字符串类型,它返回它作为参数接收的值。
答案 5 :(得分:0)
正如其他人所说,它们都是局部变量,这个例子说明了方法如何获取和返回值。
这里发生的最有趣的部分是C#中的字符串不是原语,因此您声明的局部变量实际上是对象的引用,而不是对象数据本身。因此,在此代码中,您基本上设置了两个局部变量来引用同一个对象,而不是同一个对象的两个不同副本。
在此方法的堆栈框架中分配局部变量(因此,它们为什么它们是此方法的“本地”),而对象通常在堆上分配。
在这个例子中,这并不重要,因为字符串是不可变的,所以这些引用都不能在没有其他引用知道的情况下编辑对象。但是考虑一下还是很好的!