如何准确调用具有不同修饰符的方法
How are Methods with different modifiers called exactly
这是我的第一个 post。我正在尝试 运行 这个 C# 代码,但我得到了一个不需要的输出:
当我运行下面的代码:
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";
}
}
我希望输出按此顺序:
Inside Public helper method
Calling Private Helper method..Private Helper Method Called!
Now Inside Private Helper method
但我得到以下输出:
Inside Public helper method
Private Helper Method Called!
Calling Private Helper method..Now Inside Private Helper method
我错过了什么?为什么顺序变了?
提前致谢。
这完全是因为 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
的 return 值。要知道 return 值,必须调用该方法。在 PrivateHelperMethod
里面,我们有
Console.WriteLine("Private Helper Method Called!");
同样,一个简单的。只打印 Private Helper Method Called!
.
然后 PrivateHelperMethod
returns 一个值。该值附加到 Calling Private Helper method..
。现在您要打印的所有内容都已完成评估,它会打印 Calling Private Helper method..Now Inside Private Helper method
.
what do I do to get the desired output without having two Console.WriteLine statements?
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";
}
}
考虑一下 Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
这行是为了在控制台中打印一些东西吧?并且要打印的值将是一个连接的字符串,对吗?因此,在打印之前,它将检查第二个字符串以执行连接,并将控件移至 PrivateHelperMethod
,以便打印 Private Helper Method Called!
。
嗯,那是因为在执行 PublicHelperMethod
中的第二个 WriteLine
之前,您的 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";
}
}
你可以这么写:
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";
}
你在它调用时写 "Private Method Called",工作就完成了。
这是我的第一个 post。我正在尝试 运行 这个 C# 代码,但我得到了一个不需要的输出:
当我运行下面的代码:
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";
}
}
我希望输出按此顺序:
Inside Public helper method
Calling Private Helper method..Private Helper Method Called!
Now Inside Private Helper method
但我得到以下输出:
Inside Public helper method
Private Helper Method Called!
Calling Private Helper method..Now Inside Private Helper method
我错过了什么?为什么顺序变了? 提前致谢。
这完全是因为 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
的 return 值。要知道 return 值,必须调用该方法。在 PrivateHelperMethod
里面,我们有
Console.WriteLine("Private Helper Method Called!");
同样,一个简单的。只打印 Private Helper Method Called!
.
然后 PrivateHelperMethod
returns 一个值。该值附加到 Calling Private Helper method..
。现在您要打印的所有内容都已完成评估,它会打印 Calling Private Helper method..Now Inside Private Helper method
.
what do I do to get the desired output without having two Console.WriteLine statements?
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";
}
}
考虑一下 Console.WriteLine("Calling Private Helper method.." + PrivateHelperMethod());
这行是为了在控制台中打印一些东西吧?并且要打印的值将是一个连接的字符串,对吗?因此,在打印之前,它将检查第二个字符串以执行连接,并将控件移至 PrivateHelperMethod
,以便打印 Private Helper Method Called!
。
嗯,那是因为在执行 PublicHelperMethod
中的第二个 WriteLine
之前,您的 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";
}
}
你可以这么写:
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";
}
你在它调用时写 "Private Method Called",工作就完成了。