当我在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有什么区别?
答案 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
,则会发生编译器错误。