自从C# 8.0 发布以来,我真的很享受可空引用类型的“无效安全” 。然而,在调整我的库以支持新功能时,我偶然发现了一个“问题”,我真的在任何地方都找不到答案。我看过微软的发行说明和 .NET 源代码,但没有运气。
TL;DR:问题本质上是一个IEnumerator<T>的Current属性是否应该被声明为可以为空的引用类型。
假设以下实现IEnumerator<T>:
public class WebSocketClientEnumerator<TWebSocketClient> : IEnumerator<TWebSocketClient> where TWebSocketClient : WebSocketClient
{
private WebSocketRoom<TWebSocketClient> room;
private int curIndex;
private TWebSocketClient? curCli;
public WebSocketClientEnumerator(WebSocketRoom<TWebSocketClient> room)
{
this.room = room;
curIndex = -1;
curCli = default(TWebSocketClient);
}
public bool MoveNext()
{
if (++curIndex >= room.Count)
{
return false;
}
else
{
curCli = room[curIndex];
}
return true;
}
public void Reset() { curIndex = -1; } …Run Code Online (Sandbox Code Playgroud) 我最近卸载了 MongoDB 3.2 来安装 MongoDB 3.6。从那以后,每次我尝试启动 mongod 时,都会收到以下错误:failed to open minidump file C:\Program Files\MongoDB\Server\3.2018-02-18T17-02-35.mdmp : Access is denied.
我什至不太确定它为什么这么说,Access is denied因为正如我所提到的,我卸载了 MongoDB 3.2,因此 server/3.2/ 目录不再存在。那么有没有办法改变 MongoDB 查找这个文件的位置?
另外,请注意路径在 3.2 之后似乎缺少斜杠......它确实在我的终端中出现,这不是错字,我不确定我应该怎么想。
我正在运行 Windows 10。我想指出的是,我确实使用了 MongoDB“向导”来卸载 MongoDB 3.2 版。
编辑:我决定擦除我所有的数据库数据文件夹并将数据库种子放回,现在它似乎工作正常,但如果可能的话,我会保持问题的开放,直到我们找到问题的明确答案