静态类自引用

本文关键字:自引用 静态类 | 更新日期: 2023-09-27 18:30:53

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

Color color = Color.Red;

为我的福,并写

Foo x = Foo.y;

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

string s = "...";

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

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

Bar w = 1 ; 与Bar w = new Bar(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;

会工作...但我会三思而后行。隐式转换通常会通过隐藏行为来损害代码的可读性。