c#: иметь возвращаемое значение класса без прямой ссылки на переменную - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь выяснить, возможно ли создать класс, который возвращает значение по умолчанию без ссылки на метод / переменную.

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?

1 Ответ

2 голосов
/ 24 января 2020

Есть способ, как это сделать, и это будет неявное или явное преобразование.

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"
    }
}

В конце я бы не стал go для него и лучше использовал бы метод или свойство.

...