読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーをやっています。好きなツール:WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

System.IO.Path.Combineメソッドはドライブレター直後にセパレータを付加しない

.NET

System.IO.Path.Combineメソッドはドライブレター直後にセパレータを付加しません。
Path.Combine メソッド (System.IO)
複数の文字列を 1 つのパスに結合します。 ...

つまり、次のコードは、

System.IO.Path.Combine(@"c:", "hoge");

以下を返します。


c:hoge

検証

検証してみましょう。

using System.IO;
using NUnit.Framework;

namespace Testing {
    [TestFixture]
    public class PathTest {
        [Test]
        public void ドライブレターの直後にセパレーターなし() {
            string path = Path.Combine("c:", "hoge"); 
            Assert.AreEqual("c:hoge", path);
        }

        [Test]
        public void ドライブレターの直後にセパレーターを付加() {
            string path = Path.Combine(@"c:\", "hoge"); 
            Assert.AreEqual(@"c:\hoge", path);
        }
    }
}

自分でセパレーターを付加しないといけないということですね。