用If语句赋值字符串和整型

本文关键字:整型 字符串 赋值 If 语句 | 更新日期: 2023-09-27 18:14:03

好的,我一直在寻找解决方案,但我被难住了。我正在做一个电子邮件客户端在c#。我可以使用c#,但有时会遇到语法问题。

这是我的问题。我正试图根据用户输入的电子邮件分配smtpclient设置。我在第53行得到一个错误(使用未分配的局部变量)。
smtpclient smm = new smtpclient(s, p);
下面是我的代码:
        private void Send_Click(object sender, EventArgs e)
    {
        //Set the login info for the email
        NetworkCredential nc = new NetworkCredential(Euser.Text, Epass.Text);
        MailMessage msg = new MailMessage();
        msg.To.Add(Toemail.Text);
        msg.From = new MailAddress(Euser.Text);
        msg.Subject = Subemail.Text;
        msg.Body = body.Text;
        string s;
        int p;
        if (Euser.Text.Contains("@gmail.com") == true)
        {
            s = "smtp.gmail.com";
            p = 587;
        }
        if (Euser.Text.Contains("@yahoo.com") == true)
        {
           s = "smtp.mail.yahoo.com"; 
           p = 995;
        }
        if (Euser.Text.Contains("@live.com") == true)
        {
           s = "smtp.live.com"; 
           p = 587;
        }
        SmtpClient smm = new SmtpClient(s, p);
        smm.Credentials = nc;
        smm.EnableSsl = true;
        try
        {
            smm.Send(msg);
            MessageBox.Show("Emails Sent Successfully");
        }
        catch (Exception ex)
        {
            MessageBox.Show("There was an error sending your emails");
        }

我到底做错了什么?我应该为此创建一个方法吗?

用If语句赋值字符串和整型

在任何情况下都必须给变量一个值。现在,如果你的if测试都不正确,那么sp最终会是什么?它们永远不会被设置为任何东西。

为了避免这个错误,你可以用默认值初始化变量:

string s = null;
int p = 0;

或者给他们更有意义的东西,如果有意义的话。

另一种选择是使用else来捕获其他所有内容。但是,您必须将if语句重构为else if语句(无论如何,这将更好)。如果你已经找到了一个匹配,你不应该继续测试进一步的匹配):

if (test)
{
}
else if (test)
{
}
else if (test)
{
}
else
{
    s = null;
    p = 0;
}

如果您没有进入任何If,则s和p中没有值,因此设置默认值或放置ELSE