2010-11-22 2 views

ответ

5

Обновление до .Net 4.0, которое добавляет overloads you're looking for.


Если вы застряли в .NET 3.5, вы можете вызвать Path.Combine несколько раз.

Если у вас есть IEnumerable<string>, вы можете написать

string path = strings.Aggregate(Path.Combine); 
+0

Ничего себе, я не понял, что они добавили foldl в .Net 4.0. Ницца. – jtdubs

+0

@jtdubs: Что? – SLaks

+1

@jtdubs: Он присутствует с C# 3.0. – jason

2

Я не программист C#, но что-то вроде

string s = Path.Combine("str1", Path.Combine("str2", Path.Combine("str3", "str4"))); 

Кажется очевидным.

2

Если вы можете перейти на .NET 4.0, у вас есть то, что вы ищете.

В противном случае:

public string Combine(IEnumerable<string> strings) { 
    return strings.Aggregate((x, y) => Path.Combine(x, y)); 
} 

и

public string Combine(params string[] strings) { 
    return Combine((IEnumerable<string>)strings); 
} 
+0

@SLaks: Ого. Не знал об этой перегрузке. Благодаря! – jason

Смежные вопросы