这些方括号在c#中意味着什么?

时间:2012-12-16 19:24:51

标签: c# model square-bracket

  

可能重复:
  .NET: What are attributes?

方括号在以下代码中的含义是什么:

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

我在其他问题中已经读到它们属于属性,但我不知道 它们是如何工作的......为什么它们出现在这个类中? 这些只用在C#中吗?

2 个答案:

答案 0 :(得分:3)

基本的想法是你要标记你的代码。他们的工作方式取决于“你”

假设您正在构建多个表单以便将数据输入到多个类中,并且您希望显示针对强制类的提示并对其进行验证,并且您希望代码执行此操作对于您正在执行的所有类都是通用的表单,并且您绝对不希望每次向您的任何类添加新的强制属性时更改该例程。

使用反射,您可以将对象传递给例程,获取所有属性的列表,找到具有[Required]属性的所有属性,甚至测试实例以查看它不是空白,并将其列表返回无需了解课程内容。 不是它,不是它有多少属性,它们是什么类型。唯一的共享代码是RequiredAttribute类。

最简单的学习方法是定义自己的一个并使用它。

谷歌.Net System.Attribute,例子比比皆是。

答案 1 :(得分:2)

他们被称为Attributes。请看MSDN

  

属性由继承的类定义(直接或   间接地)来自抽象类System.Attribute。附上一个   属性为代码元素,在中指定属性的类型名称   方括号,在代码元素之前。


  

这些只用在C#中吗?

没有。 Java也有属性类。其他oop语言也可以。