C# 如何使用struct将字母从每个字符串移动到新字符串?

C# 如何使用struct将字母从每个字符串移动到新字符串?,c#,arrays,string,class,struct,C#,Arrays,String,Class,Struct,我需要创建一个结构,将两个字符串中的每个字符串移动到一个新字符串中。示例字符串“world” 字符串“book” 输出“wboorolkd” 我构建了这个结构,但是我无法在这里得到我所做的输出 我是C的新手# 一个比@Rango的答案更冗长、更幼稚的解决方案,但对初学者来说可能更清晰 string a = "abc"; string b = "defxyz"; StringBuilder sb = new StringBuilder(); int max = Math.Max(a.Length,

我需要创建一个结构,将两个字符串中的每个字符串移动到一个新字符串中。示例字符串“world” 字符串“book” 输出“wboorolkd” 我构建了这个结构,但是我无法在这里得到我所做的输出

我是C的新手#


一个比@Rango的答案更冗长、更幼稚的解决方案,但对初学者来说可能更清晰

string a = "abc";
string b = "defxyz";
StringBuilder sb = new StringBuilder();
int max = Math.Max(a.Length, b.Length);
for (int i = 0; i < max; i++)
{
    if (i < a.Length)
    {
        sb.Append(a[i]);
    }
    if (i < b.Length)
    {
        sb.Append(b[i]);
    }
}
Console.WriteLine(sb.ToString());
string a=“abc”;
字符串b=“defxyz”;
StringBuilder sb=新的StringBuilder();
int max=数学最大值(a.长度,b.长度);
对于(int i=0;i
我不确定这是否是您想要的,但如果我理解正确,您可以这样做:

public struct Person
{
    public string name1;
    public string name2;

    public string merge()
    {
        string retval = "";

        int length = name1.Length;

        if (length < name2.Length)
            length = name2.Length;

        for(int i = 0; i < length; i++)
        {
            if (name1.Length > i)
                retval += name1[i];

            if (name2.Length > i)
                retval += name2[i];
        }

        return retval;
    }
}
公共结构人
{
公共字符串名称1;
公共字符串名称2;
公共字符串合并()
{
字符串retval=“”;
int length=name1.length;
if(长度<名称2.长度)
长度=名称2.长度;
for(int i=0;ii)
retval+=name1[i];
如果(名称2.Length>i)
retval+=name2[i];
}
返回返回;
}
}

您的代码没有实现上述功能的任何逻辑。你需要试着先写下逻辑,如果你在这方面遇到任何问题,就回到这里。逻辑是一个字符一个字符地压缩这两个字符串,并从中创建一个新字符串。提示:字符串是字符的集合。如果一个字符串比另一个字符串长,行为应该是什么?到目前为止给出的解决方案仅限于两个字符串,这是您想要的吗?还是您想要一个x个字符串的组合解决方案?我想您的数学.Max解决方案比我的解决方案好。我没想过。但是为什么要使用StringBuilder,StringBuilder.Append()和String+=Char之间有性能差异吗?@Ahrtaler是的,它效率更高,但对于如此短的字符串,它可以忽略不计。我更喜欢这个解决方案。如果您对LINQ不太熟悉,您会更容易理解它,而且即使使用大字符串,它也很有效。@Rango最有效的方法是将循环与
余数
位相结合。Rotem,非常感谢您的代码,这是我想要的,但教授想被用作struct,而我知道怎么做,这让我很难受,只是我脑子里想不出struct,我希望你能帮我,我试过了,但没用,但你的程序接近什么。回答我的死记硬背是正确的,但他没有按照作业要求使用struct。谢谢,我抄的,效果很好。错误是什么?我会说Rotem和我的答案几乎是一样的。当然,你们也可以把答案写进一个结构中。
public struct Person
{
    public string name1;
    public string name2;

    public string merge()
    {
        string retval = "";

        int length = name1.Length;

        if (length < name2.Length)
            length = name2.Length;

        for(int i = 0; i < length; i++)
        {
            if (name1.Length > i)
                retval += name1[i];

            if (name2.Length > i)
                retval += name2[i];
        }

        return retval;
    }
}