在 C# 中使用 for 循环和字符串组合填充字符串数组

本文关键字:字符串 组合 填充 数组 循环 for | 更新日期: 2023-09-27 18:33:15

我有一个定义为String[] sEmails;的字符串数组,我试图用 10 个不同(但相似)的字符串(在本例中为电子邮件地址)填充该数组。

这是我尝试用来填充数组的代码。

public void populateEmailArray()
    {
        for (int x = 0; x < 10; x++)
        {
            switch(x)
            {
                case 1:
                    sEmails[x] = sRepStuff + "1" + sGmail; 
                break;
                case 2:
                    sEmails[x] = sRepStuff + "2" + sGmail;
                break;
                case 3:
                    sEmails[x] = sRepStuff + "3" + sGmail;
                break;
                case 4:
                    sEmails[x] = sRepStuff + "4" + sGmail;
                break;
                case 5:
                    sEmails[x] = sRepStuff + "5" + sGmail;
                break;
                case 6:
                    sEmails[x] = sRepStuff + "6" + sGmail;
                break;
                case 7:
                    sEmails[x] = sRepStuff + "7" + sGmail;
                break;
                case 8:
                    sEmails[x] = sRepStuff + "8" + sGmail;
                break;
                case 9:
                    sEmails[x] = sRepStuff + "9" + sGmail;
                break;
            }
        }
    }

最终结果我想成为这样的东西

sEmails['repstuff1@gmail.com','repstuff2@gmail.com','repstuff3@gmail.com']等等,以 repstuff9@gmail.com

但是在第一次尝试设置sEmails[x]时,它给了我一个错误"NullReferenceException 未处理。 对象引用未设置为对象的实例。

我不知道我在这里做错了什么,因为代码在我的脑海中似乎是合理的。 对此的任何帮助将不胜感激。

在 C# 中使用 for 循环和字符串组合填充字符串数组

尝试使用

String[] sEmails = new String[10];

您还可以使该循环更加简洁:

public void populateEmailArray()
{
    for (int x = 0; x < 10; x++)
    {
        sEmails[x] = sRepStuff + x + sGmail; 
    }
}

希望你一切顺利。

我今天就帮你清理代码!

与其做开关盒,不如这样做

for(int i = 0; i < 10 ; i++)
{
   emails[i]="repstuff"+i+"@gmail.com";
}

这有助于您清除编码风格。此外,您是否检查过是否已实例化/创建您的sEmail,repStuff和Gmail?

数组从

0 而不是 1 开始索引,因此您没有给sEmails[0]一个值。将所有值下移 1。然后,当您访问sEmail[0]时,它仍将null。您还应该确保您的 sEmail 数组已实例化:

sEmails = new String[10];

这应该有效:

public void populateEmailArray()
{
       sEmails = new String[10];
        for (int x = 0; x < 10; x++)
        {
            switch(x)
            {
                case 0:
                    sEmails[x] = sRepStuff + "1" + sGmail; 
                break;
                case 1:
                    sEmails[x] = sRepStuff + "2" + sGmail;
                break;
                case 2:
                    sEmails[x] = sRepStuff + "3" + sGmail;
                break;
                case 3:
                    sEmails[x] = sRepStuff + "4" + sGmail;
                break;
                case 4:
                    sEmails[x] = sRepStuff + "5" + sGmail;
                break;
                case 5:
                    sEmails[x] = sRepStuff + "6" + sGmail;
                break;
                case 6:
                    sEmails[x] = sRepStuff + "7" + sGmail;
                break;
                case 7:
                    sEmails[x] = sRepStuff + "8" + sGmail;
                break;
                case 8:
                    sEmails[x] = sRepStuff + "9" + sGmail;
                break;
                case 9:
                    sEmails[x] = sRepStuff + "10" + sGmail;
                break;
            }
        }
    }

更好、更简洁的版本是:

for(int i = 0; i < 10 ; i++)
{
   sEmails[i]="repstuff"+(i+1)+"@gmail.com";
}

对于您已经接受的解决方案,我会添加一些"香料"以使其更具活力。我不会设置 10 个硬编码,但我会改用数组的长度。

public void populateEmailArray()
{
    int length = sEmails.Length;
    for (int x = 0; x < length; x++)
    {
        sEmails[x] = sRepStuff + x + sGmail; 
    }
}

当我必须在一段时间后返回程序并且必须记住并检查我必须更改的所有点时,我不相信我的记忆,例如您的电子邮件数组必须增长到 20 个元素。