【问题标题】:What do these square brackets mean in c#? [duplicate]这些方括号在 c# 中是什么意思? [复制]
【发布时间】:2012-12-16 19:24:51
【问题描述】:

可能重复:
.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# 中使用?

【问题讨论】:

标签: c# model square-bracket


【解决方案1】:

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

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

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

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

Google .Net System.Attribute,例子比比皆是。

【讨论】:

  • 谢谢,这真的很有帮助!
【解决方案2】:

他们被称为Attributes。看MSDN

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


这些只用在 C# 中吗?

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

【讨论】:

  • Nitpick:Java 有 注解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2019-06-26
相关资源
最近更新 更多