C#此类运算符在类字段声明中

时间:2012-09-22 09:20:41

标签: c#

这是一个纯粹的学术问题 - 我已经很容易找到了解决方法。

在将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多页中的启示)。是这种情况还是应该在字段声明之前的一行中看到一些错误?

1 个答案:

答案 0 :(得分:3)

查看C# Language specification部分7.6.7:

  

7.6.7此访问权限

     

只允许在实例块中使用 this-access   构造函数,实例方法或实例访问器。 ...(具体省略)......   在除了那些之外的上下文中的primary-expression中使用它   上面列出的是编译时错误。特别是,事实并非如此   可以在静态方法中引用这个,静态属性   访问者,或在字段声明的变量初始化程序中。

因此,在上例中的变量初始化程序中使用它是编译时错误。要修复它,请将初始化移动到构造函数中。