C#中的[]是什么?

15
例如:
    [TestFixtureSetUp]
    public void Init()
    {
        GetTestRepo(false);
    }

[TestFixtureSetUp]在这个例子中是什么意思?根据我的经验,[]通常指列表。

6个回答

36

属性。它们是一种添加元数据的方法,用于方法/属性/接口/类/命名空间在运行时检查时。

您的示例将TestFixtureSetUpAttribute添加到方法中。这允许测试运行程序确定在设置文本夹时要运行类中的哪个方法。

测试运行程序在运行时将测试程序集加载到内存中。然后,它枚举在程序集内定义了特定属性(NUnit用于标记测试类的任何内容)的类。现在,运行程序知道要实例化哪些类来运行测试。然后,它查找类中定义的方法以找到要运行以设置测试夹的方法。它在每个方法中搜索所询问的属性。一旦找到该方法,它就知道在运行测试/每个测试之前运行该方法(无论在NUnit中是什么意思)。

属性都是关于添加有关可以在运行时搜索的方法的信息。如果您不需要它们,您不会错过它们,但当您确实需要它们时,它们可用时非常棒。

在C#中,您可以从类型名称中省略"Attribute"。编译器知道当您说[Serializable]时,您在谈论"SerializableAttribute"。

你在 URL 那里做了什么啊?www.google.com/url 是干什么用的?我以前没见过。 - P Daddy
@pdaddy 可能是我的搜索中的一个错误。已经修复了。 - user1228

2

2

1

这是一个属性。类似于您在其上使用的类/函数的元数据。


0

它们被称为属性(类似于Java的注解),并作为元数据编译在其中。


-1

你在Stack Overflow中一次提出一个问题的方式,看起来像是在重建一个基本的VB/C#常见问题解答。此外,这似乎是获得声望的好方法。

回答标题中的问题,[]是用于

  • 访问数组的符号
  • 封装方法元数据的属性(元数据)
  • 我记不太清的另一件事情

VB.Net使用<>字符来表示元数据,但使用()来表示数组访问。
Java使用前导“@”来达到同样的目的。

如果没有这些特殊字符,编译器无法解释您写的内容。不确定您还想了解什么。您想知道TestFixture的含义吗?


2
他应该阅读常见问题解答。谷歌搜索他的问题标题,你会在前两个结果中找到答案。更不用说实际给出的答案与问题不符,而且问题与标题也没有真正相关。 - Andrew
5
您似乎将评论放在了答案的位置,请尝试阅读常见问题解答。 - Neil N
1
回应上面的评论。我是不是太“元”了,超出了你的口味? - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接