属性 的表达式主体集合方法中的多个值

Multiple values in an expression-bodied set method of a property

是否可以在一个set方法中设置多个值?

我想做如下事情:

public int ID { get; set => {Property = value, ID=value}; }

set之后不需要=>,可以用{..}代替。我认为您正在寻找这样的 class:

class Sample
{
    private int _Property;
    private int _ID;
    public int Property
    {
        get { return _Property; }          
    }
    public int ID
    {
        get { return _ID; }
        set
        {
            _ID = value;
            _Property = value;
        }
    }
}

这里有一个 Example 展示了工作原理,

Here the Property is a read only property you cannot set its value, it will automatically assigned when you set the value for ID

Expression-bodied setters 没有执行多个操作的表达能力,所以你需要使用完整的方法体语法:

private Foo foo;
public Foo Foo
{
    get { return foo; }
    set
    {
        foo = value;
        OtherProperty = value.SomethingElse;
    }
}

在某些情况下这样做是合理的,因为某些操作本质上具有副作用。例如,如果您正在设置一个对象的时区 属性,则更改基础 DateTime 以确保其 DateTimeKindDateTimeKind.Local 是有意义的。如果不这样做,则对象的 DateTime 属性 不完整或错误。

也就是说,如果您发现自己到处都这样做,您可能需要重新考虑您的设计,因为过度使用会产生代码味道。