这会被认为是C#.Net中的不良做法吗?
public T CurrentValue {
get {
return current;
}
protected set {
AnimationUpdated(new AnimationChangedEventArgs(current = value));
}
}
答案 0 :(得分:2)
假设T在此范围内有效并且current被声明为类型T,这将起作用,但我会将赋值移动到它自己的行。
这是一件小事,但我觉得它让它更具可读性。我保留了方法调用的变量赋值。 IT还表明了做两件事的意图。
在我工作的地方,这被认为是不好的做法。
public T CurrentValue {
get {
return current;
}
protected set {
current = value;
AnimationUpdated(new AnimationChangedEventArgs(current));
}
}
答案 1 :(得分:0)
从技术上讲,这在语法上是有效的(C#在这方面遵循C - “简单”赋值也是一个表达式)但它令人困惑。对于一件事来说,它看起来太像“==”了(事实上,人们最初可能会认为这首先是你想要做的事情);很容易错过任务正在发生的事实,因为你通常不希望它发生在那里。
答案 2 :(得分:0)
我同意TychonOmega,但是,我发现你正试图在价值变化时举起一个事件。 也许您应该考虑使用Observable类型而不是这样做。 看看这些文章:
https://msdn.microsoft.com/en-us/library/system.reactive.linq.observable(v=vs.103).aspx
https://msdn.microsoft.com/en-us/library/dd990377(v=vs.110).aspx