在C#中[In,Out]表示什么

本文关键字:Out 表示 什么 In | 更新日期: 2023-09-27 18:25:36

我正在浏览StreamReader的源代码,在那里我找到了-

public override int Read([In, Out] char[] buffer, int index, int count)
{
}

有人能解释一下第一个参数的[In , Out]是什么意思吗?

在C#中[In,Out]表示什么

它们是具有[AttributeUsage(AttributeTargets.Parameter, Inherited = false)] 的属性(参数属性)

属性的目标是应用该属性的实体。例如,属性可以应用于类、特定方法或整个程序集。默认情况下,属性应用于它前面的元素。但是,您也可以显式地标识,例如,属性是否应用于方法,或应用于其参数,或应用于其返回值。

-从这里引用

InAttributeOutAttribute的定义如下:

[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class InAttribute : Attribute
{
    internal static Attribute GetCustomAttribute(RuntimeParameterInfo parameter)
    {
        return parameter.IsIn ? new InAttribute() : null;
    }
    internal static bool IsDefined(RuntimeParameterInfo parameter)
    {
        return parameter.IsIn;
    }
    public InAttribute()
    {
    }
}
[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class OutAttribute : Attribute
{
    internal static Attribute GetCustomAttribute(RuntimeParameterInfo parameter)
    {
        return parameter.IsOut ? new OutAttribute() : null;
    }
    internal static bool IsDefined(RuntimeParameterInfo parameter)
    {
        return parameter.IsOut;
    }
    public OutAttribute()
    {
    }
}

有关这些属性类的更多详细信息,请参阅referencesource.microsoft.com上的此处。