Создание каталога представляет в виде строки от составных частей в C#

Чтобы получить представление, вы можете увидеть таблицу ниже. Он показывает все операторы Java с наивысшего приоритета, а также их ассоциативность

enter image description here

. Взятые из здесь [ 116]

Итак, как вы можете видеть в соответствии с этим, оба результата будут true

6
задан Seb Nilsson 27 September 2008 в 21:47
поделиться

4 ответа

C# поддерживает неограниченный args в методах?

Да, взгляните на ключевое слово параметрических усилителей. Поможет записать функцию, которая просто называет Путь. Объедините соответствующее количество раз, как (непротестированный):

string CombinePaths(params string[] parts) {
    string result = String.Empty;
    foreach (string s in parts) {
        result = Path.Combine(result, s);
    }
    return result;
}
15
ответ дан 8 December 2019 в 04:56
поделиться

LINQ к спасению снова. Совокупная дополнительная функция может использоваться для выполнения то, что Вы хотите. Рассмотрите этот пример:

string[] ary = new string[] { "c:\\", "Windows", "System" };
string path = ary.Aggregate((aggregation, val) => Path.Combine(aggregation, val));
Console.WriteLine(path); //outputs c:\Windows\System
8
ответ дан 8 December 2019 в 04:56
поделиться

Я предпочитаю использовать DirectoryInfo по сравнению со статическими методами для Каталога, потому что я думаю, что это - лучший дизайн OO. Вот решение с DirectoryInfo + дополнительные методы, что я думаю, довольно хорошо использовать:

    public static DirectoryInfo Subdirectory(this DirectoryInfo self, params string[] subdirectoryName)
    {
        Array.ForEach(
            subdirectoryName, 
            sn => self = new DirectoryInfo(Path.Combine(self.FullName, sn))
            );
        return self;
    }

Я не люблю того, что я изменяю self, но для этого сокращенного метода, я думаю, что это более чисто, чем создание новой переменной.

Сайт вызова восполняет его, хотя:

        DirectoryInfo di = new DirectoryInfo("C:\\")
            .Subdirectory("Windows")
            .Subdirectory("System32");

        DirectoryInfo di2 = new DirectoryInfo("C:\\")
            .Subdirectory("Windows", "System32");

Добавление способа получить FileInfo оставляют как осуществление (для другого ТАК вопрос!).

1
ответ дан 8 December 2019 в 04:56
поделиться

Попробуйте этого:

public static string CreateDirectoryName(string fileName, params string[] folders)
{
    if(folders == null || folders.Length <= 0)
    {
        return fileName;
    }

    string directory = string.Empty;
    foreach(string folder in folders)
    {
        directory = System.IO.Path.Combine(directory, folder);
    }
    directory = System.IO.Path.Combine(directory, fileName);

    return directory;
}

Параметрические усилители делают его так, чтобы можно было добавить бесконечную сумму строк.

Путь. Объединение делает должен удостовериться, что введенные строки не начинаются или заканчиваются наклонными чертами и проверками на любые недопустимые символы.

0
ответ дан 8 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: