Visual Studio / WPF > System.Environment.NewLineとsting.Format()を使って複数改行の文字列を用意する > "\r\n"の代わりにSystem.Environment.NewLineを使う意味は.NET 4.6.1以降はなさそう


動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community

複数改行がある確認ダイアログを用意しようとしていた。

            string msg = "";
            //パターン1
            msg += "Is it OK?" + System.Environment.NewLine;
            msg += "Away team" + System.Environment.NewLine;
            msg += "1. Janeway" + System.Environment.NewLine;
            msg += "2. Tuvok" + System.Environment.NewLine;
            msg += "3. Chakotay";

IntelliSenseにより入力は楽だが、将来ソースを見た時に「この長ったらしいのは何だ」と思いそう。

以下のようにした。

        private void uxConfirm_Click(object sender, RoutedEventArgs e)
        {

            string msg = "";
            //パターン1
            //msg += "Is it OK?" + System.Environment.NewLine;
            //msg += "Away team" + System.Environment.NewLine;
            //msg += "1. Janeway" + System.Environment.NewLine;
            //msg += "2. Tuvok" + System.Environment.NewLine;
            //msg += "3. Chakotay";

            // パターン2
            msg = string.Format("{1}{0}{2}{0}{3}{0}{4}{0}{5}",
                System.Environment.NewLine,
                "Is it OK?", // 1
                "Away team",
                "1. Janeway",
                "2. Tuvok",
                "3. Chakotay"
                );
            MessageBoxResult res = MessageBox.Show(msg, "Confirmation", MessageBoxButton.OKCancel, MessageBoxImage.Question);
        }

途中に改行を二回入れる場合など簡単に変更できる。

System.Environment.NewLine

https://msdn.microsoft.com/ja-jp/library/system.environment.newline(v=vs.110).aspx
System.Environment.NewLineでなく\r\nで済ますと将来困ることがあるかどうか。

https://stackoverflow.com/questions/1015766/difference-between-n-and-environment-newline
answered Apr 5 '14 at 8:34
aloisdg
によると.NET 4.6.1からはPLATFORM_UNIXの"\n"を返す処理がなくなっている?
http://referencesource.microsoft.com/#mscorlib/system/environment.cs,63a04833d43dd9d3

System.Environment.NewLineを使う意味は.NET 4.6.1以降はなさそう。