繁体   English   中英

我怎么知道参数使用ref或params修饰符?

[英]How do I know that a parameter uses ref or params modifier?

在Mono.Cecil中, out参数的ParameterDefinition的属性IsOut设置为true

refparams呢? 如何通过ParameterDefinition确定那些修饰符之一用于方法参数?

尽管ParameterDefinition不包含IsRefIsParams ,但很容易从其他两个属性中确定这两个属性。

当参数包含ref修饰符时, ParameterDefinition.ParameterType.IsByReference值为true 否则,即使实际参数是引用类型,它也为false

至于paramsCustomAttributes集合包含一个与System.ParamArrayAttribute相对应的元素。

以下代码说明了如何确定四种状态:

using System;
using System.Linq;
using Mono.Cecil;

...

if (definition.IsOut)
{
    // There is an `out` modifier.
}
else if (definition.ParameterType.IsByReference)
{
    // There is a `ref` modifier.
}
else if (definition.CustomAttributes.Any(attribute => 
    attribute.AttributeType.FullName == typeof(ParamArrayAttribute).FullName))
{
    // There is a `params` modifier.
}
else
{
    // There are no modifiers.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM