C# 中没有参数类型的方法参数
Method Parameter Without A Parameter Type In C#
我尝试使用 C# 编写的第三方软件的试用版。
当我尝试使用它的 API 时,我遇到了一个奇怪的问题。
我正在使用 visual studio 2015,我在他们的 API-SDK
中发现了一个有趣的扩展方法签名
public static class CallExtendedInfoEx
{
public static void AddToSIPMessage(this CallExtendedInfo info, msg);
}
第二个参数类型不存在。以前在 C# 中从未见过。我尝试将通用对象参数作为第二个参数,但 C# 编译器给出了一个奇怪的错误
Severity Code Description Project File Line
Error CS1503 Argument 2: cannot convert from 'object' to '.'
它适用于 "null"...没有编译器错误或 运行 时间错误 [我认为已忽略]
那些家伙怎么能用C#写出这样的代码?可能吗?有什么想法吗?
Note : I suspect from a code obscurification problem...But still i do not understand what is going here
IL_0073: call void [CallExtendedInfoEx::AddToSIPMessage(class [VoIP.CallExtendedInfo,
class [VoIPSDK]''.'')
这不是有效的 C# 代码。某些反编译器可能给了您该代码,或者您复制此代码的文档有问题。
嗯,看看 ILDASM 输出,很明显该参数具有完全有效的类型。当然,这是一种您实际上无法在 C# 中命名的类型,但它在整个 CLR 中完全有效。
可以传递 null
的事实不足为奇 - 参数是引用类型(或可从 null
转换),因此 null
是一个完全有效的值.另一方面,期望传递一个 object
实例是完全错误的——你只能传递更多的派生类型作为参数,而不是 less。可以传递 string
(更具体)而不是 object
(不太具体),但反之则不行。
最有可能的是,这要么是您不应该接触的方法(即不是 API/SDK 的 public 契约的一部分),要么您应该获得参数的实例来自其他方法 - 永远不要在任何地方使用显式类型。
我尝试使用 C# 编写的第三方软件的试用版。 当我尝试使用它的 API 时,我遇到了一个奇怪的问题。
我正在使用 visual studio 2015,我在他们的 API-SDK
中发现了一个有趣的扩展方法签名 public static class CallExtendedInfoEx
{
public static void AddToSIPMessage(this CallExtendedInfo info, msg);
}
第二个参数类型不存在。以前在 C# 中从未见过。我尝试将通用对象参数作为第二个参数,但 C# 编译器给出了一个奇怪的错误
Severity Code Description Project File Line
Error CS1503 Argument 2: cannot convert from 'object' to '.'
它适用于 "null"...没有编译器错误或 运行 时间错误 [我认为已忽略]
那些家伙怎么能用C#写出这样的代码?可能吗?有什么想法吗?
Note : I suspect from a code obscurification problem...But still i do not understand what is going here
IL_0073: call void [CallExtendedInfoEx::AddToSIPMessage(class [VoIP.CallExtendedInfo,
class [VoIPSDK]''.'')
这不是有效的 C# 代码。某些反编译器可能给了您该代码,或者您复制此代码的文档有问题。
嗯,看看 ILDASM 输出,很明显该参数具有完全有效的类型。当然,这是一种您实际上无法在 C# 中命名的类型,但它在整个 CLR 中完全有效。
可以传递 null
的事实不足为奇 - 参数是引用类型(或可从 null
转换),因此 null
是一个完全有效的值.另一方面,期望传递一个 object
实例是完全错误的——你只能传递更多的派生类型作为参数,而不是 less。可以传递 string
(更具体)而不是 object
(不太具体),但反之则不行。
最有可能的是,这要么是您不应该接触的方法(即不是 API/SDK 的 public 契约的一部分),要么您应该获得参数的实例来自其他方法 - 永远不要在任何地方使用显式类型。