param在c#中意味着什么(不是params)

时间:2015-12-30 09:27:39

标签: c# marshalling

我找到了以下属性声明。

     [param: MarshalAs(UnmanagedType.LPTStr)]

在这种情况下,param关键字的含义是什么?我们为什么要使用它?

2 个答案:

答案 0 :(得分:5)

param属性目标。引自MSDN

  

可能的目标值列表如下表所示。

 C#            Visual Basic    Applies to

assembly Assembly Entire assembly module Module Current assembly module (which is different from a Visual Basic Module) field Not supported Field in a class or a struct event Not supported Event method Not supported Method or get and set property accessors param Not supported Method parameters or set property accessor parameters property Not supported Property return Not supported Return value of a method, property indexer, or get property accessor type Not supported Struct, class, interface, enum, or delegate

在您的示例中,该属性可能用于属性设置器,并将该属性分配给(隐式)value参数。

答案 1 :(得分:0)

这与使用MarshalAs属性的编组过程有关,其中UnmanagedType.LPTStr表示它正在编组为unicode字符。 ' ' PARAM'用作属性标记。正如Heinzi所说,在上面提到的C#中,允许使用目标值,这里它用于属性值参数。

相关问题