0

我看到很多遗留的 .Net 1.1 风格的代码在工作,如下例所示,我想在自动属性的帮助下缩小这些代码。这将帮助许多班级缩小 30-40%,我认为这会很好。

public int MyIntThingy
{
    get
    {
        return _myIntThingy;
    }

    set
    {
        _myIntThingy = value;
    }
} private int _myIntThingy = -1;

这将变成:

public int MyIntThingy
{
    get;
    set;
}

唯一的问题是 - 我在哪里设置MyIntThingy = -1;

如果我从一开始就写这门课,那么我会有一个更好的主意,但我没有。一个明显的答案是:把它放在构造函数中。麻烦的是:这个类中有很多构造函数。在调试器中观察初始化-1,我看到它在构造函数被调用之前发生(我相信)。就好像我需要使用此处描述的静态构造函数: http ://www.c-sharpcorner.com/uploadfile/cupadhyay/staticconstructors11092005061428am/staticconstructors.aspx ,除了我的变量不是静态的。我想到了 Java 的静态初始化程序,但又一次 - 我的变量不是静态的。http://www.glenmccl.com/tip_003.htm

我想对这个类进行风格但不是功能上的改变。尽管它很糟糕,但它已经经过了几年的测试和工作。破坏功能会很糟糕。所以......我正在寻找更短,更甜,更可爱,但等效的代码。如果您有任何问题,请告诉我。

4

2 回答 2

1

如果您只需要风格上的非破坏性更改,请考虑稍微更改格式:

public int MyIntThingy
{
    get { return _myIntThingy; }
    set { _myIntThingy = value; }
} 
private int _myIntThingy = -1;    

那不是更漂亮吗?

并考虑仅对未来的代码使用自动属性。除非没有默认值,否则在现有代码上使用它们听起来太冒险了。

于 2010-05-25T22:33:58.427 回答
1

恐怕你别无选择。

如果您想使用具有与类型默认值不同的初始值的自动属性,则需要在构造函数中设置初始值。

于 2010-05-25T22:34:59.283 回答