这个语法在c#中是什么意思?
本文关键字:是什么 意思 语法 | 更新日期: 2023-09-27 18:06:04
我可能没有写对,但是我在WebMethod上面看到了这样的东西:
[return:(XmlElement("Class2"),IsNullable = false)]
public Class2 MEthod1()
{
}
我先看了vb版本,然后用一个转换器把它转换成c#。我以前从未见过它。
这是一个属性目标,在您的示例中使用它来消除对返回值与其他元素的歧义:
// default: applies to method
[SomeAttr]
int Method1() { return 0; }
// applies to method
[method: SomeAttr]
int Method2() { return 0; }
// applies to return value
[return: SomeAttr]
int Method3() { return 0; }
在创建属性时,您可以指定该属性可以应用于哪些语言元素。下面的例子说明了这一点。
查看可用目标的列表:
http://msdn.microsoft.com/en-us/library/system.attributetargets.aspx
namespace AttTargsCS
{
// This attribute is only valid on a class.
[AttributeUsage(AttributeTargets.Class)]
public class ClassTargetAttribute : Attribute {
}
// This attribute is only valid on a method.
[AttributeUsage(AttributeTargets.Method)]
public class MethodTargetAttribute : Attribute {
}
// This attribute is only valid on a constructor.
[AttributeUsage(AttributeTargets.Constructor)]
public class ConstructorTargetAttribute : Attribute {
}
// This attribute is only valid on a field.
[AttributeUsage(AttributeTargets.Field)]
public class FieldTargetAttribute : Attribute {
}
// This attribute is valid on a class or a method.
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]
public class ClassMethodTargetAttribute : Attribute {
}
// This attribute is valid on any target.
[AttributeUsage(AttributeTargets.All)]
public class AllTargetsAttribute : Attribute {
}
[ClassTarget]
[ClassMethodTarget]
[AllTargets]
public class TestClassAttribute {
[ConstructorTarget]
[AllTargets]
TestClassAttribute() {
}
[MethodTarget]
[ClassMethodTarget]
[AllTargets]
public void Method1() {
}
[FieldTarget]
[AllTargets]
public int myInt;
static void Main(string[] args) {
}
}
}
这是一个属性,用于修改如何将方法的返回值序列化为XML。
通常,[return: Attribute]
语法用于表示该属性适用于方法的返回值。