c#:具有不带直接变量引用的类返回值

c#:具有不带直接变量引用的类返回值,c#,return,return-value,C#,Return,Return Value,我试图弄清楚是否有可能创建一个在默认情况下不使用方法/变量引用而返回值的类 public class Attribute { public int defaultValue = _base + _mods; private int _base; private int _mods; public Attribute (int b, int m) { _base = b; _mods = m; } } publi

我试图弄清楚是否有可能创建一个在默认情况下不使用方法/变量引用而返回值的类

public class Attribute
{
    public int defaultValue = _base + _mods;

    private int _base;
    private int _mods;

    public Attribute (int b, int m)
    {
        _base = b;
        _mods = m;
    }
}

public class UseAttribute
{
    private Attribute att;

    public Start()
    {
        att = new Attribute(5,2);
    }

    public void CheckAttribute()
    {
        console.WriteLine("att: " + att); //Outputs:"att: 7"
    }
}

这是可以做到的,还是我必须始终使用att.defaultValue?

有一种方法可以做到这一点,它将是隐式或显式转换

public class Attribute
{  
    private int _base;
    private int _mods;

    public Attribute (int b, int m)
    {
        _base = b;
        _mods = m;
    }

    public static implicit operator int(Attribute attr) => attr._base + attr._mods;

    public override string ToString() => $"{this._base + this._mods}";
}

public class UseAttribute
{
    private Attribute att;

    public UseAttribute()
    {
        att = new Attribute(5,2);
    }

    public void CheckAttribute()
    {
        console.WriteLine("att: " + att); //Outputs:"att: 7"
    }
}

最后,我不会选择它,而是更好地使用方法或属性。

类没有返回值这样的东西。我认为你实际上在寻找的是,如果你想“显示一个对象”,那么字符串输出就是一个例子。我的主要用例是作为rpg角色的属性,它几乎总是只需要返回组合的base和modifiers值。很遗憾听到这是不可能的,但感谢您的快速回复!我不熟悉隐式关键字。看来我有一些书要读,谢谢!