自定义属性或特殊属性还是这个模式?

时间:2013-08-24 15:16:21

标签: c# properties attributes encapsulation

我试图找出他们在这里使用的编程技术。正如您所看到的,“AAA类”具有一个名为“MessageInfo”的类型属性。我需要知道这是“自定义属性”还是一种特殊属性。

我尝试做研究和阅读不同的书籍,我仍然很困惑。

public class AAA
{
    public BBB MessageInfo { get; set; }

    object.MessageInfo.text = "xxxxx";
}

public class BBB
{
    // text here... 
}

3 个答案:

答案 0 :(得分:0)

来自C# Language Specification,第10.7节:

属性是一个成员,可以访问对象或类的特征。属性的示例包括字符串的长度,字体的大小,窗口的标题,客户的名称等。属性是字段的自然扩展 - 两者都是具有关联类型的命名成员,访问字段和属性的语法是相同的。但是,与字段不同,属性不表示存储位置。相反,属性具有访问器,用于指定在读取或写入值时要执行的语句。因此,属性提供了一种机制,用于将动作与对象属性的读取和写入相关联;此外,他们允许计算这些属性。

单击链接,下载规范,导航到第10.7节,然后将其添加到阅读列表中。

答案 1 :(得分:0)

  

我需要知道这是“自定义属性”还是一种特殊属性。

这是一个属性。

In C# 3.0 and later, auto-implemented properties make property-declaration more concise when no additional logic is required in the property accessors. They also enable client code to create objects. When you declare a property as you have in your example, the compiler creates a private, anonymous backing field that can only be accessed through the property's get and set accessors.

像这样的东西

private BBB _bbb;
public BBB MessageInfo 
{ 
get{ return _bbb;}
set{_bbb= value;} 
}

答案 2 :(得分:0)

这只是BBB类型的属性object.MessageInfo.text中的.text实际上表示BBB类中的另一个公共属性。

您可以查看有关C#属性的此MSDN文章或此ONE