0

在这里,我了解本地变量的含义。但是我的 SecondVar 做了什么?方法 2 不是将 myValue 提供给我的 SecondVar 吗?

这些代码意味着在method2中将“something”设置为myVar到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;
}
4

6 回答 6

1

两者都是局部变量。根据您的代码,两者都将具有相同的值。间接mySecondVar获得 的值。myVar

于 2013-06-18T15:29:19.943 回答
1
string mySecondVar = method2(myVar);

这行代码调用method2,传递myVar,并将方法调用的返回值赋给mySecondVar。通常,method2 实际上会在返回值之前对其进行处理。在这个例子中,它什么也不做,所以你最终得到了分配给 mySecondVar 的“某物”。

于 2013-06-18T15:29:37.777 回答
0

正如其他人所说,它们都是局部变量,这个例子说明了方法如何获取和返回值。

这里发生的最有趣的部分是 C# 中的字符串不是基元,因此您声明的局部变量实际上是对对象的引用,而不是对象数据本身。所以在这段代码中,你基本上设置了两个局部变量来引用同一个对象,而不是同一个对象的两个不同副本。

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

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

于 2013-06-18T15:41:57.577 回答
0

这只是为了说明一个函数将返回一个它应该返回的类型的值。
在这种情况下,函数 method2 是字符串类型,它返回作为参数接收的值。

于 2013-06-18T15:37:01.400 回答
0

两者都是局部变量,因为它们是在同一个作用域中声明的。

string myVar = "something";

在这里,您直接将 myVar 初始化为某个值。

string mySecondVar = method2(myVar);

在这里,您正在分配 to 返回的method2()mySecondVarmethod2()返回 的 值myVar而不对其进行任何操作,因此mySecondVar也被初始化为与 相同的值myVar

于 2013-06-18T15:30:15.840 回答
0

在您的情况下,method2 正在做的唯一事情是接收字符串值“something”,并将相同的值“something”返回给 mysecondvar。它严格地接受一个字符串并返回相同的字符串。

于 2013-06-18T15:30:16.440 回答