public static string Combine (string path1, string path2)
{
if (path1 == null)
throw new ArgumentNullException ("path1");
if (path2 == null)
throw new ArgumentNullException ("path2");
if (path1.Length == 0)
return path2;
if (path2.Length == 0)
return path1;
if (path1.IndexOfAny (InvalidPathChars) != -1)
throw new ArgumentException ("Illegal characters in path.");
if (path2.IndexOfAny (InvalidPathChars) != -1)
throw new ArgumentException ("Illegal characters in path.");
//TODO???: UNC names
if (IsPathRooted (path2))
return path2;
char p1end = path1 [path1.Length - 1];
if (p1end != DirectorySeparatorChar && p1end != AltDirectorySeparatorChar && p1end != VolumeSeparatorChar)
return path1 + DirectorySeparatorStr + path2;
return path1 + path2;
}