这是一个纯粹的学术问题 - 我已经很容易找到了解决方法。
在将VB.Net类移植到C#时,我在一个类中声明了一个字段,该类使用this关键字作为new()语句中的参数。编译器说“关键字'这个'在当前上下文中不可用'(VB编译器没有看到这种状态的问题)。我通过将字段的初始化移动到类的构造函数来轻松解决这个问题。
编辑:阅读评论后,我添加了以下代码块
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多页中的启示)。是这种情况还是应该在字段声明之前的一行中看到一些错误?
答案 0 :(得分:3)
查看C# Language specification部分7.6.7:
7.6.7此访问权限
只允许在实例块中使用 this-access 构造函数,实例方法或实例访问器。 ...(具体省略)...... 在除了那些之外的上下文中的primary-expression中使用它 上面列出的是编译时错误。特别是,事实并非如此 可以在静态方法中引用这个,静态属性 访问者,或在字段声明的变量初始化程序中。
因此,在上例中的变量初始化程序中使用它是编译时错误。要修复它,请将初始化移动到构造函数中。