我收到错误消息“名称 _client 在当前上下文中不存在。” “数据库”变量也是如此。
namespace MongoDB_Test
{
class Program
{
protected static IMongoClient _client;
protected static IMongoDatabase _database;
_client = new MongoClient(); // error here
_database = _client.GetDatabase("test"); // same error but for _database variable
}
}
我没有收到以下代码的错误:
namespace MongoDB_Test
{
class Program
{
protected static IMongoClient _client = new MongoClient();
protected static IMongoDatabase _database = _client.GetDatabase("test");
}
}
为什么第一段代码会出现错误?
最佳答案
您不能在方法之外编写代码,除非它是基本的声明/初始化行。命令式代码语句在方法范围之外并没有真正意义。这就是您的第二个示例起作用的原因。
但是,您可以编写静态构造函数:
class Program
{
protected static IMongoClient _client;
protected static IMongoDatabase _database;
static Program()
{
_client = new MongoClient();
_database = _client.GetDatabase("test");
}
}
请记住,字段初始值设定项(静态或实例)和构造函数(静态或实例)和方法在对象构造期间的执行时间完全不同。如果代码依赖于计时,您需要确保在需要时进行初始化。
关于C#:为什么这个静态赋值不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637357/