用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
测试都不正确,那么s
和p
最终会是什么?它们永远不会被设置为任何东西。
为了避免这个错误,你可以用默认值初始化变量:
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