【问题标题】:Visual studio and string.format in new line parameters issue新行参数问题中的 Visual Studio 和 string.format
【发布时间】:2013-09-10 09:07:56
【问题描述】:

我重写了我的 ToString() 方法,我的类包含许多字段。
我只能在最后一个字符串之后有新行,并且只能将变量放在下一行。
注意 - 这仅用于视觉目的,我不想在打印之间分隔一行.. 只在我的 21" 屏幕上看到整行而不滚动。

这行得通:

    public override string ToString()
    {
        return String.Format("{0}, IsAccessible = {1}, NetworkAddress = {2}, Manufacturer = {3}, Model = {4}, Firmware = {5}, Driver = {6}, MacAddress = {7}, Scenes count = {8}",
            base.ToString(), IsAccessible, NetworkAddress, Manufacturer, Model, Firmware, Driver, MacAddress, Scenes.Count);
    }

但这确实不起作用(相同的代码,仅在第 4 个参数后按回车键):

    public override string ToString()
    {
        return String.Format("{0}, IsAccessible = {1}, NetworkAddress = {2}, Manufacturer = {3}, Model = {4},
        Firmware = {5}, Driver = {6}, MacAddress = {7}, Scenes count = {8}",
            base.ToString(), IsAccessible, NetworkAddress, Manufacturer, Model, Firmware, Driver, MacAddress, Scenes.Count);
    }

【问题讨论】:

  • 你不能把一根绳子剪成两段
  • 我不想删减任何东西,我只想在编辑器的新行中继续写变量
  • 在你的格式声明后面加上@。然后它将被解释为一个字符串。 return String.Format(@"{0}, ...

标签: c# .net visual-studio visual-studio-2012


【解决方案1】:

String 是引号之间一行中的一系列符号。

"one two" - is string.
"one
  two" - is an error.

您可以在 c# 中通过连接有效字符串来创建多行字符串:

String s = "one" + Environment.NewLine + 
           " two";

或通过在字符串前添加@

String s = @"one
             two";

【讨论】:

    【解决方案2】:

    使用逐字字符串,以@字符开头:

    public override string ToString()
    {
        return String.Format(@"{0}, IsAccessible = {1}, NetworkAddress = {2}, Manufacturer = {3}, Model = {4},
        Firmware = {5}, Driver = {6}, MacAddress = {7}, Scenes count = {8}",
            base.ToString(), IsAccessible, NetworkAddress, Manufacturer, Model, Firmware, Driver, MacAddress, Scenes.Count);
    }
    

    【讨论】:

      【解决方案3】:

      我唯一能想到的如下:

      public override string ToString()
      {
          return String.Format(
              "{0}, IsAccessible = {1}, NetworkAddress = {2}, Manufacturer = {3},"
              + " Model = {4}, Firmware = {5}, Driver = {6}, MacAddress = {7},"
              + " Scenes count = {8}",
              base.ToString(), IsAccessible, NetworkAddress, Manufacturer, Model, Firmware, Driver, MacAddress, Scenes.Count);
      }
      

      【讨论】:

        【解决方案4】:

        试试这个:

        string temp_var = @"{0}, IsAccessible = {1}, NetworkAddress = {2}, Manufacturer = {3}, Model = {4},
                  Firmware = {5}, Driver = {6}, MacAddress = {7}, Scenes count = {8}";
        temp_var = string.Format(base.ToString(), IsAccessible, NetworkAddress, Manufacturer, Model, Firmware, Driver, MacAddress, Scenes.Count);
        return temp_var;
        

        只需将值分配给字符串变量..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-21
          • 1970-01-01
          • 1970-01-01
          • 2020-03-12
          • 1970-01-01
          • 1970-01-01
          • 2011-05-15
          相关资源
          最近更新 更多