0

在我的一堂课中,我有一个ImageNames想要获取和设置的属性。我尝试添加set,但它不起作用。如何使此属性可设置?

public string[] ImageNames
{
            get
            {
                return new string[] { };
            }

            //set; doesn't work
}
4

3 回答 3

8

您通常需要一个支持字段:

private string[] imageNames = new string[] {};
public string[] ImageNames
{
        get
        {
            return imageNames;
        }

        set
        {
            imageNames = value;
        }
 }

或使用自动属性:

 public string[] ImageNames { get; set; }

话虽如此,您可能只想公开一个允许人们添加名称的集合,而不是替换整个名称列表,即:

 private List<string> imageNames = new List<string>();
 public IList<string> ImageNames { get { return imageNames; } }

这将允许您添加和删除名称,但不能更改集合本身。

于 2013-10-16T16:05:24.690 回答
2

如果你想为你的字符串[]设置任何东西,你需要一个变量来设置。

像这样:

   private string[] m_imageNames;

   public string[] ImageNames 
   {
       get {
           if (m_imageNames == null) {
                m_imageNames = new string[] { };
           } 
           return m_imageNames;
       }
       set {
           m_imageNames = value;
       }
   }

此外,这些被称为属性,而不是属性。属性是您可以在方法、类或属性上设置的东西,它会以某种方式对其进行转换。例子:

 [DataMember]     // uses DataMemberAttribute
 public virtual int SomeVariable { get; set; }
于 2013-10-16T16:06:12.480 回答
1

只需使用自动属性

public string[] ImageNames { get; set;}

在这里阅读

http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

于 2013-10-16T16:05:30.337 回答