.net核心中的Path.GetDirectoryName()没有为空路径返回ArgumentException

时间:2018-12-28 13:27:22

标签: c# asp.net-core .net-core asp.net-core-2.2

我正在将代码从.Net Framework迁移到.Net Core,并且在API中看到了一种称为Path.GetDirectoryName()的回归。尽管我向其传递了一个空值(即“”),但它不是返回我System.ArgumentException而是返回我null值。

这过去在.Net Framework中正常工作,根据文档,这就是在.Net Core中的行为方式。

  

//例外:

     

// T:System.ArgumentException:

     

// path参数包含无效字符,为空或   只包含// //空格。

1 个答案:

答案 0 :(得分:0)

corefx文档中获取有关System.IO.Path.GetDirectoryName方法的信息:

/// <summary>
/// Returns the directory portion of a file path. This method effectively
/// removes the last segment of the given file path, i.e. it returns a
/// string consisting of all characters up to but not including the last
/// backslash ("\") in the file path. The returned value is null if the
/// specified path is null, empty, or a root (such as "\", "C:", or
/// "\\server\share").
/// </summary>
/// <remarks>
/// Directory separators are normalized in the returned string.
/// </remarks>
public static string GetDirectoryName(string path)
{
    if (path == null || PathInternal.IsEffectivelyEmpty(path.AsSpan()))
        return null;

    int end = GetDirectoryNameOffset(path.AsSpan());
    return end >= 0 ? PathInternal.NormalizeDirectorySeparators(path.Substring(0, end)) : null;
}

因此,它与完整框架版本不同,如果 指定的路径为null,空或根。这是预期的行为