我有以下示例代码。
private DirectoryInfo PathDirectoryInfo
{
get
{
if (_directoryInfo == null)
{
// Some logic to create the path
// var path = ...
_directoryInfo = new DirectoryInfo(path);
}
return _directoryInfo;
}
}
public voide SaveFile(string filename)
{
if (!PathDirectoryInfo.Exists)
{
PathDirectoryInfo.Create();
}
// PathDirectoryInfo.Exists returns false despite the folder has been created.
bool folderCreated = PathDirectoryInfo.Exists; // folderCreated == false
// Save the file
// ...
}
根据MSDN:
存在属性:如果文件或目录存在,则为true;否则为false。否则,错误。
为什么Exists在创建目录后返回false?我错过了什么吗?
答案 0 :(得分:4)
您可以将您的财产更改为:
private DirectoryInfo PathDirectoryInfo
{
get
{
if (_directoryInfo == null)
{
// Some logic to create the path
// var path = ...
_directoryInfo = new DirectoryInfo(path);
}
else
{
_directoryInfo.Refresh();
}
return _directoryInfo;
}
}
这将确保您在获得财产价值时始终使用当前信息。
那就是说,如果你没有在两者之间再次获得财产价值,它将无济于事。你是在你的情况下。