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值。很遗憾听到这是不可能的,但感谢您的快速回复!我不熟悉隐式关键字。看来我有一些书要读,谢谢!