当我运行以下代码时:
class Car1
{
public void PublicHelperMethod()
{
Console.WriteLine("Inside Public helper method");
Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
}
private string PrivateHelperMethod()
{
Console.WriteLine("Private Helper Method Called!");
return "Now Inside Private Helper method";
}
}
我希望输出符合此顺序:
内部公共帮助方法
调用私人助手方法......私人助手方法!
Now Inside Private Helper方法
但我得到以下输出:
内部公共帮助方法
私人助手方法!
调用私人助手方法..现在私人助手方法
我错过了什么?为什么订单会改变? 提前谢谢。
答案 0 :(得分:1)
这完全是因为C#评估表达式的方式。
让我们通过方法调用来调用此方法。
Console.WriteLine("Inside Public helper method");
简单易用,打印Inside Public helper method
。
Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
在这里,C#看到你想打印一些东西。但是你要打印的东西是"Calling Private Helper method.." + PrivateHelperMethod()
。这意味着它必须在打印前首先知道PrivateHelperMethod
的返回值。要知道返回值,必须调用该方法。在PrivateHelperMethod
内,我们有
Console.WriteLine("Private Helper Method Called!");
再次,一个简单的。只需打印Private Helper Method Called!
。
然后PrivateHelperMethod
返回一个值。该值附加到Calling Private Helper method..
。现在,您要打印的所有内容都已经过全面评估,它会打印Calling Private Helper method..Now Inside Private Helper method
。
如果没有两个Console.WriteLine语句,我该怎么做才能获得所需的输出?
class Car1
{
public void PublicHelperMethod()
{
Console.WriteLine("Inside Public helper method");
Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
}
private string PrivateHelperMethod()
{
return "Private Helper Method Called!\nNow Inside Private Helper method";
}
}
答案 1 :(得分:0)
考虑这条线Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
,用于在控制台中打印一些东西吗?并且要打印的值将是串联的字符串吗?因此,在打印之前,它将检查第二个字符串以执行连接,并将控件移动到PrivateHelperMethod
,以便打印Private Helper Method Called!
。
答案 2 :(得分:0)
嗯,那是因为在执行WriteLine
中的第二个PublicHelperMethod
之前,您的PrivateHelperMethod
就会运行。
你能做的是:
class Car1
{
public void PublicHelperMethod()
{
Console.WriteLine("Inside Public helper method");
Console.WriteLine("Calling Private Helper method..");
Console.WriteLine(PrivateHelperMethod());
}
private string PrivateHelperMethod()
{
Console.WriteLine("Private Helper Method Called!");
return "Now Inside Private Helper method";
}
}
答案 3 :(得分:0)
你可以这样写:
public void PublicHelperMethod()
{
Console.WriteLine("Inside Public helper method");
Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
Console.WriteLine("Private Helper Method Called!");
}
private string PrivateHelperMethod()
{
return "Now Inside Private Helper method";
}
你写"被称为私人方法"当它打电话并且工作完成时。