如何在c#中的set语句中使用i ++运算符

Arl*_*ler 1 c#

如果在属性上获得i ++类型的操作,是否有可以添加的特殊方法?

这是我正在尝试做的一个例子.我知道这不起作用,但是这让你知道我在说什么.实际上,我正在使用两个内部组件,我希望在+上增加一个,而在另一个上增加 - .

int mynum;
int yournum 
{
    get{ return mynum; }
    set{ mynum = value; }
    set++{ mynum = mynum + 5; return mynum; } //this is what I want to do
}
// elsewhere in the program
yournum++; //increases by 5
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 5

听起来您想要覆盖++在属性上调用时发生的行为yournum.如果是这样,那么在C#中就不可能获得样本中列出的代码.该++运营商应该由增加1一位用户打电话yournum++可以预期的行为.默默地改变它5肯定会导致用户混淆

通过使用自定义++运算符定义类型+ 5而不是进行转换,可以获得类似的行为+1.例如

public struct StrangeInt
{
    int m_value;

    public StrangeInt(int value)
    {
        m_value = value;
    }

    public static implicit operator StrangeInt(int i)
    {
        return new StrangeInt(i);
    }

    public static implicit operator int(StrangeInt si)
    {
        return si.m_value;
    }

    public static StrangeInt operator++(StrangeInt si)
    {
        return si.m_value + 5;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您现在定义yournameStrangeInt那么您将获得您正在寻找的行为