【问题标题】:A field initializer cannot reference the non-static field method or property字段初始值设定项不能引用非静态字段方法或属性
【发布时间】:2022-01-23 12:05:28
【问题描述】:

我已经编程了几年,而且我知道,以下应该可以正常工作。只是尝试使用一种通用类型和相同值来初始化所有变量。

int count = 0, 
    xmin = count, 
    xmax = count,  
    ymin = count, 
    ymax = count;

【问题讨论】:

    标签: c#


    【解决方案1】:

    正确的语法应该是:

    int count, xmin, xmax, ymin, ymax = 0;
    

    编辑:

    您的原始代码似乎无法正常工作?

    编辑2:

    当然,这在字段初始化器中不起作用!

    字段初始化器不能引用其他实例字段。

    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/fields

    如果你真的想要,你可以将初始化代码移到你的构造函数中——比如:

    int count = 3, xmin, xmax, ymin, ymax;
    
    void MyCtor()
    {
        xmin = xmax = ymin = ymax = count;
    }
    

    【讨论】:

    • 嗨,我找到了这个语法:string a = "", b = a , c = a, d = a, e = a, f =a; 来自:stackoverflow.com/questions/13374454/…
    • 你提出的这个旧语法有效,我现在想起来了。但是,我想,那里的另一个也可以。
    • @JohnSmith 很好,它适用于我的机器 - 并且它适用于其他机器:dotnetfiddle.net/vCoo6o
    • @JohnSmith 好吧,您还没有发布实际代码,无论如何字段初始化程序无法按照您希望的方式完成,您必须单独初始化它们。
    • Sommmen,谢谢您的回答。保重伙计!
    【解决方案2】:

    在一行中为多个变量分配相同的值可以通过以下方式完成

    int count, xmin , xmax ,  ymin , ymax;
    count = xmin = xmax = ymin = yman = 0;
    

    或者像这样

    int count, xmin, xmax, ymin, ymax = 0;
    

    【讨论】:

    • 冉,也谢谢你的意见!
    猜你喜欢
    • 2011-11-16
    • 2013-01-04
    相关资源
    最近更新 更多