Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Combine() [1/4]

static string System.IO.Path.Combine ( params string[] paths)
inlinestatic

Definition at line 331 of file Path.cs.

332 {
333 if (paths == null)
334 {
335 throw new ArgumentNullException("paths");
336 }
337 int num = 0;
338 int num2 = 0;
339 for (int i = 0; i < paths.Length; i++)
340 {
341 if (paths[i] == null)
342 {
343 throw new ArgumentNullException("paths");
344 }
345 if (paths[i].Length != 0)
346 {
347 if (IsPathRooted(paths[i]))
348 {
349 num2 = i;
350 num = paths[i].Length;
351 }
352 else
353 {
354 num += paths[i].Length;
355 }
356 char c = paths[i][paths[i].Length - 1];
357 if (!PathInternal.IsDirectorySeparator(c))
358 {
359 num++;
360 }
361 }
362 }
363 Span<char> initialBuffer = stackalloc char[260];
364 ValueStringBuilder valueStringBuilder = new ValueStringBuilder(initialBuffer);
365 valueStringBuilder.EnsureCapacity(num);
366 for (int j = num2; j < paths.Length; j++)
367 {
368 if (paths[j].Length == 0)
369 {
370 continue;
371 }
372 if (valueStringBuilder.Length == 0)
373 {
374 valueStringBuilder.Append(paths[j]);
375 continue;
376 }
377 char c2 = valueStringBuilder[valueStringBuilder.Length - 1];
378 if (!PathInternal.IsDirectorySeparator(c2))
379 {
380 valueStringBuilder.Append('\\');
381 }
382 valueStringBuilder.Append(paths[j]);
383 }
384 return valueStringBuilder.ToString();
385 }
static bool IsPathRooted([NotNullWhen(true)] string? path)
Definition Path.cs:985

References System.Text.ValueStringBuilder.Append(), System.Text.ValueStringBuilder.EnsureCapacity(), System.IO.PathInternal.IsDirectorySeparator(), System.IO.Path.IsPathRooted(), System.Text.ValueStringBuilder.Length, and System.Text.ValueStringBuilder.ToString().