"返回"之间的区别并且"返回新的"

时间:2014-04-01 12:57:41

标签: c# asp.net

当我在C#中阅读扩展方法时,我开始在下面看到编码:

public static class ExtensionMethods
{
    public static string UpperCaseFirstLetter(this string value)
    {
        if (value.Length > 0)
        {
            char[] array = value.ToCharArray();
            array[0] = char.ToUpper(array[0]);
            return new string(array);
        }
        return value;
    }
}
class Program : B
{
    static void Main(string[] args)
    { 
        string value = "dot net";
        value = value.UpperCaseFirstLetter();
        Console.WriteLine(value);
        Console.ReadLine();
    }
}

我评论了这条线,"返回新的"介绍并运行该程序。现在编译器读取代码"返回值"。如果我在没有注释该行的情况下运行程序,则编译器不会读取"返回值"线。 在C#中返回和返回new有什么区别?

4 个答案:

答案 0 :(得分:4)

没有return new之类的东西。实际发生的是:

string foo = new string(array);
return foo;

您正在返回字符串的实例。

答案 1 :(得分:2)

没有return new,它只是一个return声明,与其他声明一样。它返回的是new string(array)

如果您对该行发表评论,则该方法不会结束,而是退出if块,然后继续执行下一个return语句。

答案 2 :(得分:1)

return关键字将跳过执行并返回函数作为返回类型的值。在你的例子中它是static string所以它会返回你的字符串。

FROM OP:

I commented the line, "return new" presents and run the program. Now the compiler reads the code "return value". If I run the program without commenting that line, then the compiler not reads the "return value" line. What is the difference between return and return new in C#?

当您注释“return new”行时,编译器执行整个功能块并执行“返回值”,当存在“返回新”时,编译器将读取它并从那里返回流。

答案 3 :(得分:1)

我认为return让你很困惑。采用这个逻辑相同的代码:

public static string UpperCaseFirstLetter(this string value)
{
    string result;

    if (value.Length > 0)
    {
        char[] array = value.ToCharArray();
        array[0] = char.ToUpper(array[0]);
        result = new string(array);
    }
    else
    {
        result = value;
    }

    return result;
}

new string(array)正在调用this constructor,它接受​​一个char数组并给出一个字符串表示形式。方法签名表明将返回string。如果您尝试return array,则会发生编译器错误。