我正在查看一些C#代码,我看到了一些我无法在类定义附近弄清楚的东西。以下是我所看到的样本。
[MethodImpl(MethodImplOptions.Synchronized)]
public void AddTag(RTag tag)
{
this.tags.Add(tag)
}
第一线做什么或说什么?我无法在任何参考书中找到它。
谢谢!
答案 0 :(得分:6)
第一行是attribute,即附加到方法的元数据。
MethodImplAttribute指定方法的实现细节。特别是MethodImplOptions.Synchronized
指定该方法一次只能由一个线程执行。静态方法锁定类型,而实例方法锁定实例。只有一个线程可以在任何实例函数中执行,并且只有一个线程可以在任何类的静态函数中执行。
答案 1 :(得分:2)
在我指向课程的文档之前,在看到这样的属性时提示,这是一个属性:
[SomeName]
或
[SomeName(...)]
然后通常,实际的类名是SomeNameAttribute
。使用属性时,如果类名以单词Attribute
结尾,则可以将结尾保留。
您的示例中的类很可能是MethodImplAttribute,但我发现您可能拼写错误,错过了结束L
字母。
答案 2 :(得分:1)
它以这样的方式标记方法,即它一次只能从一个方法调用:
这对于在方法开始时执行锁定并在方法结束时释放锁定是等效的。
答案 3 :(得分:0)
[MethodImp(methodImpOptions.Synchronized)] 属性是否应用于方法...可能是在引用的库中定义的。