在 C# 中,类或函数之前的方括号中写的是啥? [复制]

Posted

技术标签:

【中文标题】在 C# 中,类或函数之前的方括号中写的是啥? [复制]【英文标题】:In C# what is the thing written in square brackets before a class or a function? [duplicate]在 C# 中,类或函数之前的方括号中写的是什么? [复制] 【发布时间】:2015-04-08 04:51:17 【问题描述】:

我熟悉 C 和 C++。我是第一次使用 C#。我试图了解 WCF 和 WPF。我在 CodeProject 中使用教程。作者在那里给出了一个示例代码。在那里,他在方括号中的接口和方法之前写了一些东西。那些是什么?他们是cmets吗? 这是给定的示例代码。

[ServiceContract(SessionMode = SessionMode.Required, 
    CallbackContract = typeof(IChatCallback))]
interface IChat

    [OperationContract(IsOneWay = true, IsInitiating = false, 
        IsTerminating = false)]
    void Say(string msg);

    [OperationContract(IsOneWay = true, IsInitiating = false, 
        IsTerminating = false)]
    void Whisper(string to, string msg);

    [OperationContract(IsOneWay = false, IsInitiating = true, 
        IsTerminating = false)]
    Person[] Join(Person name);

    [OperationContract(IsOneWay = true, IsInitiating = false, 
        IsTerminating = true)]
    void Leave();

【问题讨论】:

【参考方案1】:

这些是属性。 属性是一个声明性标签,用于向运行时传达有关程序中各种元素(如类、方法、结构、枚举器、程序集等)的行为的信息.您可以使用属性将声明性信息添加到程序中。声明性标签由放置在其所用元素上方的方括号 ([ ]) 来描述。 例如,属性可用于指示一个类是否可序列化,或特定属性应写入数据库中的哪个字段等等...... p>

以这个属性为例:

 [OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]

属性是OperationContract。而IsOneWayIsInitiatingIsTerminating是这个属性的属性。

OperationContract - 表示一个方法定义了一个操作 是 Windows Communication Foundation 中服务合同的一部分 (WCF) 应用程序。 IsOneWay - 获取或设置一个值,指示 操作是否返回回复消息。 IsInitiating - 获取或 设置一个值,该值指示该方法是否实现操作 可以在服务器上启动会话(如果存在这样的会话)。IsTerminating - 获取或设置一个值,该值指示是否 服务操作导致服务器在 回复消息(如果有)已发送。

您可以使用预定义的属性或创建自己的自定义属性。

您可以找到所有预定义属性及其描述here。 你可以阅读 this msdn 的关于属性的教程。

【讨论】:

非常感谢您的回答。我如何知道预定义的属性?我怎样才能创建自己的?有必要吗? 阅读教程。 msdn.microsoft.com/en-us/library/aa287992(v=vs.71).aspxmsdn.microsoft.com/en-us/library/aa288454(v=vs.71).aspx @eddard.stark 我添加了指向关于属性的教程的链接。以及关于 .Net 中所有属性的表格。

以上是关于在 C# 中,类或函数之前的方括号中写的是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sql在update更新时如何快速且大批量的更新数据(C#中写的)

想问一下,在java脚本中写的问号是啥意思?

将对象文字包装在箭头函数中的括号是啥意思? [复制]

通过扩展 Thread 类或实现 Runnable 来创建线程更可取的是啥? [复制]

C#函数式编程中的惰性求值详解

LeetCode20——有效的括号