gpt4 book ai didi

C# 类字段声明中的 this 运算符

转载 作者:行者123 更新时间:2023-11-30 16:22:19 25 4
gpt4 key购买 nike

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

在将 VB.Net 类移植到 C# 时,我发现类中的字段声明使用 this 关键字作为 new() 语句中的参数。编译器说“关键字‘this’在当前上下文中不可用”(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 多页语言规范中的启示)。是这种情况还是我应该在字段声明之前的其中一行中查找一些错误?

最佳答案

查看 C# Language specification第 7.6.7 节:

7.6.7 This access

A this-access is permitted only in the block of an instance constructor, an instance method, or an instance accessor. ... (specifics omitted) ... Use of this in a primary-expression in a context other than the ones listed above is a compile-time error. In particular, it is not possible to refer to this in a static method, a static property accessor, or in a variable-initializer of a field declaration.

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

关于C# 类字段声明中的 this 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12542518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com