静态类自引用

时间:2014-11-18 12:43:50

标签: c# class constructor static initialization

我正在尝试创建一个基本的Foo类,并希望复制Color的工作方式,但是我无法理解它。例如,我想获得这个功能......

Color color = Color.Red;

为我的Foo,并写

Foo x = Foo.y;

在相关的说明中,如果我理解正确的话,

string s = "...";

相同
string s = new string("...".ToCharArray())

我的问题是,我可以定义行为和行为类似的类型,以便我可以拥有类似

的类型

Bar w = 1;这与Bar w = new Bar(1)相同;

1 个答案:

答案 0 :(得分:1)

对于问题的第一部分,听起来你只想要静态字段或属性,例如

public class Foo
{
    // A field...
    public static readonly Foo MyFunkyFooField = new Foo(...);

    // A property - which could return a field, or create a new instance
    // each time.
    public static Foo MyFunkyFooProperty { get { return ...; } }
}

对于第二部分,使用字符串文字是而不是,就像调用new string(...)一样,因为它每次都重用相同的字符串引用。你不能轻易想出自己的行为。

可以创建从intBar的自定义隐式转化,以便

Bar x = 1;

会奏效......但我会这么做三思。隐式转换通常会通过隐藏行为来破坏代码的可读性。