c# – 无法访问非静态字段

栏目: ASP.NET · 发布时间: 5年前

内容简介:我们努力提供准确的错误消息,因此请仔细阅读.错误消息告诉您确切的错误:您正在访问上下文中的非静态字段,其中只有合法访问静态.那么为什么基础构造函数调用参数列表是一个只有合法访问静态的上下文?当您调用基础构造函数时,您传递的参数不得引用“this”.为什么?因为你的“this”的派生构造函数和基础构造函数都没有运行,因此“this”几乎肯定处于不一致的,部分初始化的状态.这是一个疯狂的错误的秘诀.因此,我们限制您访问“this”,直到我们知道至少基本构造函数已运行.

我无法弄清楚为什么它在寻找静态的东西:

public class DatabaseBase
{
    private readonly string connectionString;

    public DatabaseBase(string connectionString)
    {
        this.connectionString = connectionString;
    }
}

public class MyDB : DatabaseBase
{
    readonly string connectionString = ConfigurationManager.AppSettings["MyConnectionString"];

    public MyDB() : base(connectionString)
    {          
    }
}

我得到静态上下文中无法访问非静态字段’connectionString’.我在基础数据库类中看不到任何静态,为什么?

这是另一个我们做同样事情的例子:

partial class Database : DatabaseBase
{
    static string DbConnectionString
    {
        get
        {
            if (dbConnectionString == null)
                dbConnectionString = 
                    ConfigurationManager.AppSettings["MyConnectionString"];
            return dbConnectionString;
        }
    }
    public Database() :base(DbConnectionString)
    {
    }

好吧,为什么它必须是连接字符串传递的静态字符串?

我们努力提供准确的错误消息,因此请仔细阅读.错误消息告诉您确切的错误:您正在访问上下文中的非静态字段,其中只有合法访问静态.

那么为什么基础构造函数调用参数列表是一个只有合法访问静态的上下文?

当您调用基础构造函数时,您传递的参数不得引用“this”.为什么?因为你的“this”的派生构造函数和基础构造函数都没有运行,因此“this”几乎肯定处于不一致的,部分初始化的状态.这是一个疯狂的错误的秘诀.因此,我们限制您访问“this”,直到我们知道至少基本构造函数已运行.

此功能鼓励合理,有序,易懂,可维护和无错误的构造逻辑;我建议与这些保障措施合作,而不是反对.

翻译自:https://stackoverflow.com/questions/1430787/cannot-access-non-static-field


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

这就是OKR

这就是OKR

【美】约翰·杜尔(John Doerr) / 曹仰锋、王永贵 / 中信出版社 / 2018-12 / 68.00元

这本书是传奇风险投资人约翰·杜尔的作品,揭示了OKR这一目标设定系统如何促使英特尔、谷歌等科技巨头实现爆炸性增长,以及怎样促进所有组织的蓬勃发展。 20世纪70年代,在英特尔担任工程师时,杜尔首次接触到OKR。之后,作为一个风险投资人,杜尔不遗余力地将这一管理智慧,分享给50多家公司和机构,包括谷歌、亚马逊、领英、脸书、比尔及梅琳达·盖茨基金会,甚至摇滚歌手波诺的公益项目。在杜尔的帮助下,任......一起来看看 《这就是OKR》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具