分享
三行代码  ›  专栏  ›  技术社区  ›  Andres M.

如何更改参数传递给字符串格式函数取决于有多少个?

  •  0
  • Andres M.  · 技术社区  · 1 周前

    更好的方法是:

     public void formatStringInSentencesArray(int numOfArgs, int arrIndexToBeFormatted, UnityAction[] funcsToBePutIn)
        {
            if (numOfArgs == 1)
            {
                conversation[index].sentences[arrIndexToBeFormatted] = string.Format(conversation[index].sentences[arrIndexToBeFormatted], funcsToBePutIn[0]);
            }
        ...
            else if (numOfArgs == 5)
            {
                conversation[index].sentences[arrIndexToBeFormatted] = string.Format(conversation[index].sentences[arrIndexToBeFormatted], funcsToBePutIn[0], funcsToBePutIn[1], funcsToBePutIn[2], funcsToBePutIn[3], funcsToBePutIn[4]);
            }
    

    有没有什么方法可以让我这样做,而不仅仅是把一堆假设和其他假设砍掉?(这都是用C#写的,用于统一游戏btw)

    2 回复  |  直到 1 周前
        1
  •  0
  •   nkahootzShawn    1 周前

    欢迎来到这里。

    var paramArray = new string[] { "a", "b", "c", "d", "e" };
    var output = string.Format("{0} {1} {2} {3}", paramArray);
    

    根据您的示例,我可能会将您的函数替换为:

    conversation[index].sentences[arrIndexToBeFormatted] = string.Format(conversation[index].sentences[arrIndexToBeFormatted], funcsToBePutIn);
    
        2
  •  0
  •   Christopher    1 周前

    方法声明中params关键字之后不允许有其他参数,并且方法声明中只允许有一个params关键字。

    https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params

    String.Format() -使用它的功能 Console.WriteLine()

        3
  •  0
  •   Frenchy    1 周前

    var output = string.Join(" ", paramArray);