如果在属性上获得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)
听起来您想要覆盖++在属性上调用时发生的行为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)
如果您现在定义yourname为StrangeInt那么您将获得您正在寻找的行为