使用Environment.NewLine的别名

时间:2010-08-25 13:57:33

标签: c#

目前的最佳做法是在代码中使用Environment.NewLine,以便开始一个新行。我希望能够在我的代码中使用别名或重载运算符,以便更简洁。 而不是:

MessageBox.Show("My first line here" + Environment.NewLine + "My second line here");

我想有这样的事情:

MessageBox.Show("My first line here" + NL + "My second line here");

如何轻松地将其设置为IDE设置或整个项目/命名空间?

我想到了别名或重载运算符,但不确定是否有一种比Environment.NewLine更简洁的全局别名的好方法,而且之前我从未做过重载运算符,所以不是熟悉那些来龙去脉。

7 个答案:

答案 0 :(得分:5)

简单的缩短方法。在您的一个实用程序集中弹出此类:

namespace MyCompany
{
    public static class E
    {
        public static readonly string NL = System.Environment.NewLine;
    }
}

然后你可以愉快地使用它:

using MyCompany;

MessageBox.Show("My first line here" + E.NL + "My second line here");

答案 1 :(得分:3)

我可能会建议您使用扩展方法吗?

public static class StringExtensions
{
    public static string NextLine(this string s, string next)
    {
        return s + Environment.NewLine + next;
    }

    public static string NextLine(this string s)
    {
        // just add a new line with no text
        return s + Environment.NewLine;
    }
}

用法:

var lines = "My first line here".NextLine("My second line here.")
    .NextLine("third line").NextLine();

当然,如果您愿意,可以将其称为NL - 但可能并不清楚。

答案 2 :(得分:2)

在少数StringBuilder.AppendLine()的情况下使用Environment.NewLine

var sb = new StringBuilder();
sb.AppendLine("My first line here");
sb.AppendLine("My second line here");
MessageBox.Show(sb.ToString());

答案 3 :(得分:2)

编写一个类,以Environment.NewLine为成员提供namespace MyNamespace { public static class Env { public static readonly string NL = Environment.NewLine; } } 的值:

using

然后编写以下using E = MyNamespace.Env; 指令:

using

您可以将此struct指令添加到您的默认新类模板和您使用的任何其他模板(新interface,新E.NL等)。

以下是我的计算机上新类模板的位置,作为开始使用的示例:

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033

完成此操作后,您应该可以在任何地方Environment.NewLine代替{{1}}。

答案 4 :(得分:1)

别名不起作用 - 您可以为命名空间或类型添加别名,但不能为类型的属性设置别名。所以这有效:

using NL = System.Environment;

class Program
{
    static void Main(string[] args)
    {
        var s = NL.NewLine;
    }
}

但这不是:

// returns: The type name 'NewLine' does not 
// exist in the type 'System.Environment' error
using NL = System.Environment.NewLine;

重载运算符是一个有趣的想法,但是你必须使用String之外的其他东西。通常人们会创建一个struct,它可以获取基本字符串值,然后重载运算符。如果您想要做的只是替换Environment.NewLine,那么不值得痛苦。你最好按照别人的建议使用静态扩展。

另一种替代方法(如果你使用NL设置了死机)是从公共父类中删除框架中的所有类,这些类可以具有以下属性:

public class BaseParentClass
{
  public string NL
  {
    get { return System.Environment.NewLine; }
  }
}

然后在所有后代类的代码中,您的代码看起来就像:

public class ChildOfBaseParent
{
  public void Show_A_Message()
  {
      MessageBox.Show("My first line here" + NL + "My second line here");
  }
}

当然,如果你的课程没有从一个共同的父母那里下来,那么为了方便起见,你必须重构代码库。您需要为winform类创建一个并行的System.Windows.Forms.Form父级,以使其具有相同的行为。

但如果你有很多涉及NL的字符串连接,那绝对值得痛苦...

答案 5 :(得分:1)

using static System.Environment;

然后您就可以将其用作NewLine

答案 6 :(得分:0)

添加到@abatishchev响应,您可以使用StringBuilder类做很好的事情。

StringBuilder builder = new StringBuilder();

builder.Append("List:");

builder.AppendLine();

builder.Append("1. Boat")

builder.Append("2. Car").AppendLine();

builder.Replace("Boat", "Jet");