通过C#中的方法传递字符串数组

Posted

技术标签:

【中文标题】通过C#中的方法传递字符串数组【英文标题】:Passing string array's through methods in c# 【发布时间】:2021-07-25 18:21:46 【问题描述】:

我对 C# 很陌生

我正在尝试创建代码,该代码从用户那里获取输入并将其保存在 SignUp() 方法中的数组中,然后如果我调用 Profile() 方法,它会显示个人信息

发生的错误是当我尝试在主行中调用 Profile() 方法时,它显示“没有给定的参数与 Profile(string[]) 所需的形式参数 'privinfo' 相对应” /p>

using System;

namespace SDD_Assessment_2

    class Program
    
        static void Main(string[] args)
        
            //SignUp();
            var privInfo = SignUp();
            Profile(privInfo);         
        

        static string[] SignUp()
        
            string[] privinfo = new string[4];
            Console.Write("First Name: ");
            privinfo[0] = Console.ReadLine();
            Console.Write("Last Name: ");
            privinfo[1] = Console.ReadLine();
            Console.Write("Email: ");
            privinfo[2] = Console.ReadLine();
            Console.Write("Password: ");
            privinfo[3] = Console.ReadLine();
            return privinfo;
        
        static void Profile(string[] privinfo)
        
            Console.WriteLine("Name: " + privinfo[0] + " " + privinfo[1]);
            Console.WriteLine("Email: " + privinfo[2]);
            Console.WriteLine("Password: " + privinfo[3]);
        
    

【问题讨论】:

你必须提供数组返回 Signup Profile 如何提供数组?将其放在 profile() 方法参数中是否无法实现? @HimBromBeere 仅仅因为你必须有一个具有相同名称的变量的方法并不意味着这些变量是相同的。实际上,它们彼此之间没有绝对的区别,这就是范围的意义所在。这两个变量都只存在于声明它们的方法中。 如何提供数组?当我将数组名称放入参数中时,我以为我已经在提议数组了... P.S 我更新了我拥有的代码 ^ @HimBromBeere ^ 【参考方案1】:

您没有保存从SignUp() 返回的值,因此当方法结束时,本地 数据被删除。您需要捕获该值,并将其传递给 Profile 方法,该方法需要一个字符串数组作为输入。

static void Main(string[] args)

    var privInfo = SignUp();
    Profile(privInfo);
    ...

【讨论】:

这解决了原来的问题,没有更多错误,但是当我调用 Profile() 方法时,它运行 SignUp() 方法代码,但我想要它,所以它是一个显示什么的选项他们输入。 @Tris 来自您问题中的代码 Profile 不运行 SignUp,所以我认为这不是您的实际代码。 这样做 - “var privInfo = SignUp();”调用 SignUp() 函数?因为如果是这样,这就是为什么,虽然我只是认为它保存了从 SignUp() @HimBromBeere 返回的值 "我只是认为它保存了 signUp() 中的值" ... signUp 是一种方法,因此要从中保存值,当然需要运行它.. 另外,每个方法后面的 () 是调用方法。 查看我对您问题的评论。当然SignUp 会运行,但是您必须使用从它返回的值

以上是关于通过C#中的方法传递字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

通过 jQuery AJAX 将字符串数组传递给 C# WebMethod

通过互操作将字符串数组从 C# 传递到 C++

传递对 C# 数组中元素的引用

将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器

将 C# 字符串数组传递给 C++

我应该如何使用 P/Invoke 将字符串数组传递给 C 库?