C# 类型为';的未处理异常;System.ArgumentOutOfRangeException';发生

C# 类型为';的未处理异常;System.ArgumentOutOfRangeException';发生,c#,C#,此代码应该将电子邮件解析为用户名和域名。如果我输入apa@gmail.com,一个信息框显示并显示“用户名:apa域名:gmail.com”。 我修改了教科书中的代码,并在email=email.Remove(0,1)处不断收到上述错误消息和domainName=Email.Remove(Email.Length-1,1)。有什么建议吗 public partial class StringHandling : Form { string email = ""; string s

此代码应该将电子邮件解析为用户名和域名。如果我输入apa@gmail.com,一个信息框显示并显示“用户名:apa域名:gmail.com”。 我修改了教科书中的代码,并在
email=email.Remove(0,1)处不断收到上述错误消息
domainName=Email.Remove(Email.Length-1,1)
。有什么建议吗

public partial class StringHandling : Form
{
    string email = "";
    string state = "";
    string city = "";
    int zipCode = 0;

    public StringHandling()
    {
        InitializeComponent();
    }

    private void btnParse_Click(object sender, EventArgs e)
    {
        string Email = "";
        string domainName = "";
        email = txtEmail.Text;
        email = Email.Trim();
        if (email.StartsWith(""))
            email = Email.Remove(0, 1);
        if (email.EndsWith("@"))
            domainName = Email.Remove(Email.Length - 1, 1);

        MessageBox.Show("Username: " + email + "\n" + "Domain Name: " + domainName);
email.StartsWith(“”)
将始终为真(您实际上还没有指定电子邮件应该以什么开头)。因为它总是以空字符串开头,所以当您尝试调用
email=email.Remove(0,1)时。您正试图删除第一个字符,由于字符串为空,因此没有第一个字符(字符串总长度为0),因此会出现该异常


我的建议是:避免使用不同大小写的多个变量(即电子邮件和电子邮件)。这导致了一些混乱。这是两个独立的变量,您从未为
电子邮件
(国会大厦E)分配过任何内容,因此在
电子邮件=电子邮件的情况下,删除(0,1)
Email
将始终是空字符串并引发此错误。

Email.StartsWith(“”
)-对于C中的空字符串(当您测试字符串是否以空字符串开头时),它将返回true;Email和Email是两个不同的变量。你给email变量分配了一个空字符串,当然你不能从空字符串中删除任何内容
email
总是空的,因此
email.Length-1
将始终是-1。因此,我怀疑你的教科书是否真的说这段代码应该分析电子邮件的两个组成部分。这段代码只是尝试从字符串的开头和结尾删除字符好的,我可以理解。我把那部分修好了。现在,它将用户名与我无法获取的域名分开。它只是将所有内容填充到我的消息框的用户名字段中@弗兰克兹感谢你的帮助,而不是居高临下。我是C#的新手,这门课对我来说很难,因为我没有像其他同学一样上所有的课。你帮了我一个大忙。我可以限定用户名,但不能限定域名,而且它根本不能显示@符号。所以,我只是有点迷路了。再次感谢你的帮助。