例如,如果我有一个对象,例如:
public class MyObject
{
public MyObject(int initialValue)
{
this.InitialValue = initialValue;
this.CurrentValue = initialValue;
}
public int InitialValue { get; set; }
public int CurrentValue { get; set; }
public static implicit operator MyObject(int someValue)
{
MyObject result = new MyObject(someValue);
return result;
}
}
是否可以在隐式转换中保留初始值(如果有)并且只更新当前值?
我们的想法是做这样的事情:
MyObject test = 4; // Both InitialValue and CurrentValue are now 4.
test = 5; // InitialValue is 4 but CurrentValue is now 5.
这是一个远景,我认为这是不可能的,但如果有人有任何绝妙的想法来实现这一目标,我将不胜感激。
谢谢!
最佳答案
您可以在不进行任何分配的情况下进行转换。这方面的一个例子是调用函数时:
void SomeFunction(MyObject passedValue) { /* ... */ }
可以像这样通过隐式转换调用:
SomeFunction(5);
并且没有分配发生。
即使确实发生了赋值,请记住您赋值给变量,而不是对象。从某种意义上说,您在这种情况下要求的对象实际上是 result
变量。
关于c# - 在 .NET 中,在实现隐式转换运算符时,是否可以访问分配给的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22941388/