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

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

内容简介:我们努力提供准确的错误消息,因此请仔细阅读.错误消息告诉您确切的错误:您正在访问上下文中的非静态字段,其中只有合法访问静态.那么为什么基础构造函数调用参数列表是一个只有合法访问静态的上下文?当您调用基础构造函数时,您传递的参数不得引用“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


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

查看所有标签

猜你喜欢:

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

研究之美

研究之美

[美] Donald E. Knuth / 高博 / 电子工业出版社 / 2012-1-1 / 49.00元

《研究之美》是计算机科学大师、“算法分析之父”高德纳(Donald E.Knuth)在20世纪70年代旅居挪威时撰写的适用于计算机科学的一种全新基础数学结构的情景小品。全书以一对追求自由精神生活的青年男女为主人公,展开了一段对于该种全新结构的发现和构造的对白。在此过程中,本书充分展示了计算机科学的从业人员进行全新领域探索时所必备的怀疑、立论、构造、证明、归纳、演绎等逻辑推理和深入反思的能力。《研究......一起来看看 《研究之美》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

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

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具