我正在将代码从.Net Framework迁移到.Net Core,并且在API中看到了一种称为Path.GetDirectoryName()
的回归。尽管我向其传递了一个空值(即“”),但它不是返回我System.ArgumentException
而是返回我null
值。
这过去在.Net Framework中正常工作,根据文档,这就是在.Net Core中的行为方式。
//例外:
// T:System.ArgumentException:
// path参数包含无效字符,为空或 只包含// //空格。
答案 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,空或根。这是预期的行为