如何在公共财产中设置私有结构字段?

时间:2014-10-22 16:02:17

标签: c# properties structure

我有一个结构:

public struct ServiceDescription
        {
            string serviceDescriptionText;
            string serviceLogoRef;

            /// <summary>
            /// The position to print the service on the label.
            /// </summary>
            int servicePosition;

            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="serviceDescriptionText"></param>
            /// <param name="serviceLogoRef"></param>
            /// <param name="servicePosition"></param>
            public ServiceDescription(string serviceDescriptionText, string serviceLogoRef,
                                        int servicePosition)
            {
                this.serviceDescriptionText = serviceDescriptionText;
                this.serviceLogoRef = serviceLogoRef;
                this.servicePosition = servicePosition;
            }
        }

和财产:

public string pServiceDescription
{
    get
    {
        return p_sServiceDescription;
    }
    // set private structure field 1
    // set private structure field 2
    // etc...
}

如何在我的属性的setter中设置结构的每个私有字段?

1 个答案:

答案 0 :(得分:4)

拥有可变结构通常是一个非常糟糕的主意;可变值类型语义是人们通常期望的。但是,可以,只需添加一个与其他常规设置器一样的set。这不是一个好主意:

public string Text
{
    get { return text; }
    set { text = value; } // this is a really bad idea on a struct
}

如果是我,那将是一个带有private readonly字段的不可变结构和一个构造函数,它设置所有这些(和get - 仅属性)或类 - 可能具有自动实现的属性,即

public class ServiceDescription {
    public string Text {get;set;}
    //...
}