我在c#局部变量中有一些关于这个例子的问题

时间:2013-06-18 15:25:39

标签: c#

在这里,我理解本地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;
}

6 个答案:

答案 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#中的字符串不是原语,因此您声明的局部变量实际上是对象的引用,而不是对象数据本身。因此,在此代码中,您基本上设置了两个局部变量来引用同一个对象,而不是同一个对象的两个不同副本。

在此方法的堆栈框架中分配局部变量(因此,它们为什么它们是此方法的“本地”),而对象通常在堆上分配。

在这个例子中,这并不重要,因为字符串是不可变的,所以这些引用都不能在没有其他引用知道的情况下编辑对象。但是考虑一下还是很好的!