C# 使用作业作为表达方式是一种好的做法吗?

C# 使用作业作为表达方式是一种好的做法吗?,c#,C#,这在C#Net中会被认为是不好的做法吗 假设T在此范围内有效,并且current被声明为类型T,这将起作用,但我会将赋值移到它自己的行 这是一件小事,但我觉得它更具可读性。我不允许方法调用变量赋值。它还显示了做两件事的意图 在我工作的地方,这会被认为是坏习惯 public T CurrentValue { get { return current; } protected set { current = value; Ani

这在C#Net中会被认为是不好的做法吗


假设T在此范围内有效,并且current被声明为类型T,这将起作用,但我会将赋值移到它自己的行

这是一件小事,但我觉得它更具可读性。我不允许方法调用变量赋值。它还显示了做两件事的意图

在我工作的地方,这会被认为是坏习惯

public T CurrentValue {
    get {
        return current;
    }
    protected set {
        current = value;
        AnimationUpdated(new AnimationChangedEventArgs(current));
    }
}

从技术上讲,这在语法上是有效的(在这方面,C#跟在C后面——简单的赋值也是一个表达式),但它令人困惑。一方面,它看起来太像“==”(事实上,人们一开始可能会认为这就是你想要做的);也很容易忽略任务正在发生的事实,因为您通常不希望它在那里发生。

我同意TychonOmega的观点,但是,我看到您试图在值发生变化时引发事件。 也许你应该考虑使用可观察的类型,而不是这样做。 请看这些文章:


它的哪一部分?你所说的“这个”是什么意思?电流=值。在一个参数内赋值是可行的,也是有效的。这就是在你的属性中有一个“集合”的目的。好的,我想我明白你现在在问什么了——我误解了这个问题。是的,这在技术上是有效的,因为“简单”赋值是表达式。不,这不是一个好的做法。
public T CurrentValue {
    get {
        return current;
    }
    protected set {
        current = value;
        AnimationUpdated(new AnimationChangedEventArgs(current));
    }
}