不能隐式转换类型'string'& # 39; int # 39;在我的代码里

本文关键字:代码 int 我的 string 转换 类型 不能 | 更新日期: 2023-09-27 18:17:12

我试图发送电子邮件到多个电子邮件地址,这是在我的数据库。我的代码如下

 private void button1_Click(object sender, EventArgs e)
    {

        ArrayList list_emails = new ArrayList();
        int i=0,email = 0;

        String condata = "data source =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE))); user id = myuser; password = myuser";
        String qry = "select emailid from emailmachin";
        OracleConnection con = new OracleConnection(condata);
        OracleCommand cmd = new OracleCommand(qry, con);
        OracleDataReader myReader;
        try
        {
            con.Open();
            myReader = cmd.ExecuteReader();
            while (myReader.Read())
            {

                email = myReader.GetValue(i).ToString();
                list_emails.Add(email); //Add email to a arraylist
                i = i + 1 - 1; //increment or ++i
                //string emailIdc = myReader["emailid"].ToString();
                //textBoxTo.Text = emailIdc;
                myReader.Close();
                con.Close();
                foreach (string email_to in list_emails)
                {
                    MailMessage mail = new MailMessage();
                    mail.To.Add(email_to);
                    mail.Subject = "Welcome to C#";
                    mail.From = new MailAddress(hold_Account);
                    mail.Body = "Test";
                    SmtpClient smtp = new SmtpClient("SMTP Server");
                    smtp.Send(mail);
                }

            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
}

在这行代码email = myReader.GetValue(i).ToString();中显示了错误:

不能隐式地将'string'类型转换为'int'类型

不能隐式转换类型'string'& # 39; int # 39;在我的代码里

myReader.GetValue(i).ToString()不返回整数,它返回字符串,因此,您需要将email定义为string

int i = 0;
string email = string.Empty;

这可能是一个错误,因为所有不同的邮件变量,尝试使用更好的变量名。

同样,您的代码没有正确地增加i,它保持不变。试着用i++;代替i = i + 1 - 1;

  1. 当你不知道用string, int, char等类型声明变量时,不要担心,只需键入"var"并允许c#选择它的类型,我的朋友:)

  2. c#中的
  3. 字符串不能隐式地转换为整型,你应该显式地使用这个函数:Convert.ToInt32(your string variable or your string with quotation mark);

  4. 当你想向多个收件人发送电子邮件时,我认为你最好使用"密件抄送"(盲抄送)而不是"to",因为smtp.Send(mail);只运行一次

  5. 如何使用c#发送邮件