C#初始化局部变量一次

Mic*_*ski 5 c# initialization

我认为我的问题将是完全愚蠢的,但我必须知道答案.

在这种情况下,是否可以初始化变量一次?

    static void Main()
    {
        while (true)
        {
            MethodA();
            MethodB();
        }
    }

    private static void MethodA()
    {
        string dots = string.Empty;    // This should be done only once

        if (dots != "...")
            dots += ".";
        else
            dots = string.Empty;

        Console.WriteLine(dots + "\t" + "Method A");
        System.Threading.Thread.Sleep(500);
    }

    private static void MethodB()
    {
        string dots = string.Empty;    // This should be done only once

        if (dots != ".....")
            dots += ". ";
        else
            dots = string.Empty;

        Console.WriteLine(dots + "\t" + "Method B");
        System.Threading.Thread.Sleep(500);
    }
Run Code Online (Sandbox Code Playgroud)

当然我可以从方法中初始化字符串点,但我不想在代码中搞乱,而且这也不能在任何其他循环中完成(比如for).任何想法如何解决这个或我是如此愚蠢的思考正常?

提前致谢.

编辑:我已经将示例代码更改为更实用.期望的输出应该是:

.    Method A
.    Method B
..   Method A
..   Method B
...  Method A
...  Method B
     Method A
.... Method B
.    Method A
.....Method B
Run Code Online (Sandbox Code Playgroud)

等等

Jak*_*ake 4

您说过您不想将点保留在 Method 之外(在 Method 的类中),那么您必须从 Method 返回值,以便至少可以稍后将其传递,从而保留其状态。

string Method(string dot = string.Empty)
{
   if(dot == "...") return string.Empty;
   else return dot + ".";
}

var result = Method(Method(Method(Method(Method(Method()))))) // etc...
Run Code Online (Sandbox Code Playgroud)

编辑:您编辑的问题并不会使您最初的问题更加实际。它仍然遇到同样的问题:您想要 X,但 C# 没有 X。请改用 C++ 或 VB.NET。

你的问题的答案

“在这种情况下是否可以只初始化一个变量一次?”

抱歉,不!