System.IO.Path.CombineNoChecks C# (CSharp) Méthode

CombineNoChecks() private static méthode

private static CombineNoChecks ( string path1, string path2, string path3, string path4 ) : string
path1 string
path2 string
path3 string
path4 string
Résultat string
        private static string CombineNoChecks(string path1, string path2, string path3, string path4)
        {
            if (path1.Length == 0)
                return CombineNoChecks(path2, path3, path4);
            if (path2.Length == 0)
                return CombineNoChecks(path1, path3, path4);
            if (path3.Length == 0)
                return CombineNoChecks(path1, path2, path4);
            if (path4.Length == 0)
                return CombineNoChecks(path1, path2, path3);

            if (IsPathRooted(path4))
                return path4;
            if (IsPathRooted(path3))
                return CombineNoChecks(path3, path4);
            if (IsPathRooted(path2))
                return CombineNoChecks(path2, path3, path4);

            bool hasSep1 = PathInternal.IsDirectoryOrVolumeSeparator(path1[path1.Length - 1]);
            bool hasSep2 = PathInternal.IsDirectoryOrVolumeSeparator(path2[path2.Length - 1]);
            bool hasSep3 = PathInternal.IsDirectoryOrVolumeSeparator(path3[path3.Length - 1]);

            if (hasSep1 && hasSep2 && hasSep3)
            {
                // Use string.Concat overload that takes four strings
                return path1 + path2 + path3 + path4;
            }
            else
            {
                // string.Concat only has string-based overloads up to four arguments; after that requires allocating
                // a params string[].  Instead, try to use a cached StringBuilder.
                StringBuilder sb = StringBuilderCache.Acquire(path1.Length + path2.Length + path3.Length + path4.Length + 3);

                sb.Append(path1);
                if (!hasSep1)
                {
                    sb.Append(DirectorySeparatorChar);
                }

                sb.Append(path2);
                if (!hasSep2)
                {
                    sb.Append(DirectorySeparatorChar);
                }

                sb.Append(path3);
                if (!hasSep3)
                {
                    sb.Append(DirectorySeparatorChar);
                }

                sb.Append(path4);

                return StringBuilderCache.GetStringAndRelease(sb);
            }
        }

Same methods

Path::CombineNoChecks ( string path1, string path2 ) : string
Path::CombineNoChecks ( string path1, string path2, string path3 ) : string

Usage Example

Exemple #1
0
 public static string Combine(string path1, string path2)
 {
     if (path1 == null || path2 == null)
     {
         throw new ArgumentNullException(path1 == null ? "path1" : "path2");
     }
     Path.CheckInvalidPathChars(path1, false);
     Path.CheckInvalidPathChars(path2, false);
     return(Path.CombineNoChecks(path1, path2));
 }
All Usage Examples Of System.IO.Path::CombineNoChecks