c# - 在 .NET 中,在实现隐式转换运算符时,是否可以访问分配给的对象?

标签 c# casting operators operator-overloading implicit-conversion

例如,如果我有一个对象,例如:

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/

相关文章:

c# - 如何在 visual studio 2013 中设置 "Target Framework"?

c# - 从 URL 将图像上传到 Azure Blob 存储

java - 类转换异常 : BitmapDrawable cannot be cast to LayerDrawable

php - 将数组中的所有数字值转换为整数类型,否则将非数字值保留为字符串

perl - 在列表上下文中分配散列时有什么区别?

r - 使用:= and = in ggvis property assignments

c# - 如何使用 Cake 执行 git clone 操作

c# - FromCurrentSynchronizationContext,我错过了什么吗?

函数参数中的 const *const 指针

regex - F# 正则表达式匹配链