首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ILAsm调用C#的vararg函数

从ILAsm调用C#的vararg函数
EN

Stack Overflow用户
提问于 2013-10-09 09:39:40
回答 1查看 184关注 0票数 2

我正在编写ILAsm函数,它接收可变数量的参数并返回它们的和:

代码语言:javascript
复制
.class public auto ansi TestSentinel
{
    .method public static vararg unsigned int64 Sum( /* all arguments are optional */ )
    {
        .locals init( value class [mscorlib]System.ArgIterator Args, 
                      unsigned int64 Sum, 
                      int32 NumArgs )
        ... 
        ldloc Sum
        ret
    }
}

我的dll编译成功,但我无法从C#代码调用此函数。当我把它和

代码语言:javascript
复制
var k = TestSentinel.Sum(1);

我收到错误消息:

代码语言:javascript
复制
Error  The best overloaded method match for 'TestSentinel.Sum(__arglist, ...)' has some invalid arguments

使用任何其他参数,我都会收到wrong argument number消息。调用我的ILAsm函数的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-09 10:25:43

它需要使用无文档的__arglist关键字:

代码语言:javascript
复制
 var k = TestSentinel.Sum(__arglist(1));
 var l = TestSentinel.Sum(__arglist(1, 2, 3));

这不是很有用,最好把注意力放在一个params数组上。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19268347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档