如何使用不同的修饰符精确调用

时间:2017-03-16 07:16:16

标签: c# methods console-application call access-modifiers

这是我的第一篇文章。我正在尝试运行这个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";
        }
    }

我希望输出符合此顺序

  

内部公共帮助方法

     

调用私人助手方法......私人助手方法!

     

Now Inside Private Helper方法

但我得到以下输出

  

内部公共帮助方法

     

私人助手方法!

     

调用私人助手方法..现在私人助手方法

我错过了什么?为什么订单会改变? 提前谢谢。

4 个答案:

答案 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";
    }

你写"被称为私人方法"当它打电话并且工作完成时。