将字符串添加到C#中的列表中,一次添加一个

将字符串添加到C#中的列表中,一次添加一个,c#,list,C#,List,我对C语言相当陌生,所以这是我遇到的一个相当基本/简单的问题。我不太知道如何将这些字母中的每一个都添加到一个列表中,以便在末尾将它们全部列成一行。例如,有一个“IF/ELSE”语句,但两个语句都在末尾生成一个字母。这是我迄今为止的代码,我将感谢任何帮助/输入(请注意,我2天前开始学习该语言!) 您需要将“加密”的每个字符保存在内存中,当您退出循环时,您可以构建新的“加密”字符串 .... List<char> newChars = new List<char>(); fo

我对C语言相当陌生,所以这是我遇到的一个相当基本/简单的问题。我不太知道如何将这些字母中的每一个都添加到一个列表中,以便在末尾将它们全部列成一行。例如,有一个“IF/ELSE”语句,但两个语句都在末尾生成一个字母。这是我迄今为止的代码,我将感谢任何帮助/输入(请注意,我2天前开始学习该语言!)


您需要将“加密”的每个字符保存在内存中,当您退出循环时,您可以构建新的“加密”字符串

....
List<char> newChars = new List<char>();
foreach (char c in lower)
{
    int unicode = c;
    int shiftUnicode = unicode + shift;
    //Console.WriteLine(shiftUnicode);
    if (shiftUnicode >= 123)
    {
        int overflowUnicode = 97 + (shiftUnicode - 123);
        char character = (char)overflowUnicode;
        newChars.Add(character);    
    }
    else
    {
        char character = (char)shiftUnicode;
        newChars.Add(character);
    }
}

string newString = new string(newChars.ToArray());
Console.WriteLine(newString);
....
。。。。
List newChars=新列表();
foreach(下部为字符c)
{
int=c;
int-shiftUnicode=unicode+shift;
//控制台写入线(代码);
如果(代码>=123)
{
int overflowUnicode=97+(移位码-123);
字符=(字符)溢出Unicode;
newChars.Add(字符);
}
其他的
{
字符=(字符)移位码;
newChars.Add(字符);
}
}
string newString=新字符串(newChars.ToArray());
Console.WriteLine(新闻字符串);
....

我认为您要做的是将每个字符相加为一个字符串。您尝试使用名为
newText
的变量执行此操作,但随着循环的继续,
newText
的值将被覆盖。

if (shiftUnicode >= 123)
{
    int overflowUnicode = 97 + (shiftUnicode - 123);
    char character = (char)overflowUnicode;

    // value gets overwritten here
    string newText = character.ToString();
}
else
{
    char character = (char)shiftUnicode;

    // value gets overwritten here
    string newText = character.ToString();
}
您需要做的是:
-在您的
foreach
循环上方定义
newText
,以便您可以访问其范围之外的内容
-将任何新字符追加到
newText
的末尾,而不是覆盖其值
-使用
Console.WriteLine()


我看不到你试图将角色添加到列表中的任何地方。在每个循环中,我只能看到一个由单个字符创建的新字符串而不是
=System.Convert.ToString(Console.ReadLine())。嗨,史蒂夫,这是因为每次我试图创建一个列表时,我都会出现构建错误,甚至不知道如何处理这种情况。老实说,我甚至不知道如何定义一份清单。谢谢dcg:)
if (shiftUnicode >= 123)
{
    int overflowUnicode = 97 + (shiftUnicode - 123);
    char character = (char)overflowUnicode;

    // value gets overwritten here
    string newText = character.ToString();
}
else
{
    char character = (char)shiftUnicode;

    // value gets overwritten here
    string newText = character.ToString();
}
using System;
namespace caesarCipher
{
    class Program
    {
        static void Main(string[] args)
        {
            string text;
            Console.WriteLine("Enter the text to encrypt ");
            text = System.Convert.ToString(Console.ReadLine());
            string lower = text.ToLower();
            Random rnd = new Random();
            int shift = rnd.Next(1, 25);

            // declare and initialize newText here
            string newText = string.Empty;
            foreach (char c in lower)
            {
                int unicode = c;
                int shiftUnicode = unicode + shift;
                Console.WriteLine(shiftUnicode);
                if (shiftUnicode >= 123)
                {
                    int overflowUnicode = 97 + (shiftUnicode - 123);
                    char character = (char)overflowUnicode;

                    // append the new character to newText
                    newText += character;
                }
                else
                {
                    char character = (char)shiftUnicode;

                    // append the new character to newText
                    newText += character;
                }

            }

            // Print the value of newText to the Console
            Console.WriteLine(newText);
            Console.ReadLine();
        }
    }
}