C#类字段声明中的此运算符
这是一个纯粹的学术问题——我已经找到了一个足够容易的解决方法 在将VB.Net类移植到C#时,我在一个类中发现了一个字段的声明,该类在new()语句中将this关键字用作参数。编译器说“关键字‘this’在当前上下文中不可用”(VB编译器认为这种状态没有问题)。我通过将字段的初始化移到类的构造函数中,轻松地解决了这个问题 编辑:在阅读注释后,我添加了以下代码块C#类字段声明中的此运算符,c#,C#,这是一个纯粹的学术问题——我已经找到了一个足够容易的解决方法 在将VB.Net类移植到C#时,我在一个类中发现了一个字段的声明,该类在new()语句中将this关键字用作参数。编译器说“关键字‘this’在当前上下文中不可用”(VB编译器认为这种状态没有问题)。我通过将字段的初始化移到类的构造函数中,轻松地解决了这个问题 编辑:在阅读注释后,我添加了以下代码块 public class cTransactions { private List Trans = n
public class cTransactions
{
private List Trans = new List();
private List Archive = new List();
private cDDs Debits = new cDDs(this); // complier error
//Keyword 'this' is not available in the current context
private string path = Directory.GetCurrentDirectory() + "\";
private bool dirty = false;
private int LastID;
// followed by Property declarations, ctor, methods etc.
//...
}
然而,在类构造函数执行之前,我找不到任何对关键字“this”的引用(尽管我可能在500多页的语言规范中遗漏了这个启示).是这种情况,还是我应该在字段声明之前查看其中一行中的错误?查看第7.6.7节:
7.6.7此访问
A仅在实例块中允许此访问
构造函数、实例方法或实例访问器……(细节省略)。。。
在主表达式中,在上下文以外的上下文中使用
上面列出的是编译时错误。特别是,它不是
可以在静态方法、静态属性中引用它
访问器,或在字段声明的变量初始值设定项中
因此,在上面的示例中,在变量初始值设定项中使用它是一个编译时错误。要修复它,请将初始化移到构造函数中。没有“this”“vb.net中的关键字事实上,在这方面存在一些编译器错误-尽管我记不起具体细节。也许最好的办法是发布一行有问题的代码。@MUG4N-我没有明确地写下VB.Net以上述方式使用关键字me没有问题。欢迎使用!如果每个人都阅读他们应该阅读的每一篇文档,那么我就不会麻烦回答关于阅读语言规范等的snipes了!因此,批评一个初学者在问一个简单的问题之前没有阅读一个500页的文档是有点过分的!你能把VB.NET的原始代码贴在你看到的地方吗?谢谢你,阿克顿。我确实阅读了本节,但没有意识到字段声明实际上在指定的块之外。我的错。再次感谢。