如何在函数C#中添加数组类型参数

Posted

技术标签:

【中文标题】如何在函数C#中添加数组类型参数【英文标题】:How to add array type parameters in a function C# 【发布时间】:2020-11-06 20:41:11 【问题描述】:

我从 ASP.Net 中的一个项目开始,我有一个函数来执行登录,它有 userIdpassword 作为参数,但我需要创建一个数组参数,因为这将允许我使用不同的userId 和它们各自的password,我正在使用的函数如下:

public string Login(string sessionTicket, string dataSource, string userId, string password, int features) 
            object[] results = this.Invoke("Login", new object[] 
                        sessionTicket,
                        dataSource,
                        userId,
                        password,
                        features);
            return ((string)(results[0]));
        

除了上述之外,我将在下面的方法中使用这个函数,我还要将参数xtUserxtPass转换成一个数组:

string sessionTicket = axServicesInterface.Login("",
            GlobalVariables.dataSource,GlobalVariables.xtUser, GlobalVariables.xtPass,
            Convert.ToInt32(EAxType.AxFeature_Basic));

登录功能参数图:

登录数组需要能够交替我每个请求的两个用户

更新:

尝试回答问题,但出现错误提示“上下文中不存在用户 ID”

public class LoginDetails
        
            public string userId  get; set; 
            public string password  get; set 
        

        public string Login(string sessionTicket, string dataSource, LoginDetails[] loginDetails, int features) 
            object[] results = this.Invoke("Login", new object[] 
                        sessionTicket,
                        dataSource,
                        userId,
                        password,
                        features);
            return ((string)(results[0]));
        

他们知道我所做的是否符合我的需要,这就是我可以解决当前错误的方法。

【问题讨论】:

您在更新中调用的方法很可能期望在userIdpassword 的集合上。迭代您为数组中的每个项目调用 Invoke 的新数组。 我怀疑你会想要foreach 而不是loginDetails @JonP 你能解释得更好吗 @SebastianSalazar 您现在将 LoginDetails 数组(我假设它已填充?)传递给“外部”方法,但从未在其中使用它。 您的问题不太清楚:您想使用多组用户名和密码登录吗?为什么要使用 Invoke?如果希望使用字符串参数调用方法,则不能只传递一个数组并期望对数组中的每个值都执行它 【参考方案1】:

请添加以下类(让您拥有多组用户名和密码):

public class LoginDetails 
    public string UserName  get; set; 
    public string Password  get; set 

那么不是传递string userId, string password,而是传递LoginDetails[] loginDetails作为参数。

【讨论】:

以上是关于如何在函数C#中添加数组类型参数的主要内容,如果未能解决你的问题,请参考以下文章

如何将字节数组从 c# 传递到 MFC ActiveX

如何在不更改原始数组的情况下更改函数中的数组? [复制]

在 C# 中如何正确地将 int 数组传递给函数

如何在 C# 中声明具有动态参数的函数 [重复]

如何在 C# 中使用反射调用具有不同类型参数的方法

如何将 System::^array 从 C# 函数转换为 C++ 中的等效数据类型