如何使用通用getter和setter设置只读属性的值?

mat*_*uma 9 c# properties

不确定我是否正确说明了这一点......但我有以下代码:

    public Guid ItemId
    {
        get;
    }

    public TransactionItem()
    {
        this.ItemId = Guid.Empty;
    }
Run Code Online (Sandbox Code Playgroud)

当然我得到一个只读的问题......我明白了.无论如何设置此属性值而不必执行以下操作:

    Guid _itemId = Guid.Empty;
    public Guid ItemId
    {
        get
        {
            return _itemId;
        }
        set
        {
            _itemId = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

要么

    public Guid ItemId
    {
        get;
        internal set;
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Svi*_*ish 32

我会这样做:

public Guid ItemId
{
    get;
    private set; // can omit as of C# 6 
}

public TransactionItem()
{
    this.ItemId = Guid.Empty;
}
Run Code Online (Sandbox Code Playgroud)

当然,在本课程中设置它是开放的,但是既然你正在编写它,我希望你有理由不打破你自己的意图......

在我看来,从外面看,像readonly属性这样的东西最重要.从内到外,它并不重要,因为那里,你是国王=)