我对c#局部变量中的这个例子有一些疑问

我对c#局部变量中的这个例子有一些疑问,c#,C#,在这里,我理解了本地值的含义。 但是我的第二个Var做什么呢? method2没有将myValue赋予我的SecondVar吗 这些代码意味着在method2中将“something”设置为myVar到myValue,那么mySecondVar的功能是什么呢 private void method1() { // This is a local variable called myVar string myVar = "something"; string mySeco

在这里,我理解了本地值的含义。 但是我的第二个Var做什么呢? method2没有将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;
}

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

string mySecondVar = method2(myVar);

这行代码调用method2,传递myVar,并将方法调用的返回值分配给mySecondVar。通常情况下,method2会在返回值之前对该值进行处理。在本例中,它不起任何作用,因此您最终会将“something”分配给mySecondVar。

这两个变量都是局部变量,因为它们在相同的范围内声明

string myVar = "something";
在这里,您直接将myVar初始化为某个值

string mySecondVar = method2(myVar);

在这里,您将
method2()
返回的值分配给
mySecondVar
method2()
返回
myVar
的值,而无需对其进行任何操作,因此
mySecondVar
也会被初始化为与
myVar
相同的值。method2所做的唯一一件事就是接收字符串值“something”,在您的情况下,并将相同的值“something”返回给mySecondVar。它严格地接受一个字符串并返回相同的字符串。

这只是为了说明函数将返回它应该返回的类型的值

在本例中,函数method2是字符串类型,它返回作为参数接收的值。

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

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

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


在本例中,这其实无关紧要,因为字符串是不可变的,因此这两个引用都不能在其他引用不知道的情况下编辑对象。但是想想还是很好的

可能在那里,您可以看到
myVar==mySecondVar
(作为演示如何通过函数返回值的示例)。这就是您的全部代码吗?这里只有两个未使用的局部变量,它们恰好对单个字符串具有相同的引用。如果仅此而已,它实际上没有任何作用。别忘了向上投票任何有用的答案,并接受帮助解决问题的答案,method2看起来像是一个示例方法,向某人展示方法的工作原理,它只是将传递给它的字符串值返回给字符串变量mySecondVar