不能将类型“字符串”隐式转换为“短”

本文关键字:字符串 转换 不能 类型 | 更新日期: 2023-09-27 18:35:35

protected void btnAdd_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(Request.QueryString["id"]))
    {       
        string kundeID = "-1";
        int id = Convert.ToInt32(Request.QueryString["id"]);
        int totalsum = Convert.ToInt32(ddlAmount.SelectedValue);
        Handlevogn handlevogn = new Handlevogn
        {
            TotalSum = totalsum,
            KundeID = kundeID,
            Dato = DateTime.Now,
            ErIHandlevogn = true,
            ProduktID = id
        };
        HandlevognModell modell = new HandlevognModell();
        lblResult.Text = modell.InsertHandlevogn(handlevogn);
    } 

不断收到错误

无法隐式将 typre "字符串"转换为"short"

对于局部变量 kundeID。

不能将类型“字符串”隐式转换为“短”

最简单的解决方案是将kundelID更改为short

short kundelID = -1;

然后您之前在此处执行的隐式转换:

KundelID = kundelID; //this is called implicit because you implicitly tell kundelID, which is a short to be changed to KundelID, which is likely a short

将属于同一类型 short .

Altrlernative,如果您出于任何原因需要kundelID成为string,请在使用之前将其正确转换为KundelID

KundelID = Convert.ToInt16(kundelID);

然后,它也是正确的。

您可以使用

以下函数:

Int16.TryParse(string value, out number);

谁将返回布尔值,如果函数可以强制转换它,则为 true,如果不能,则为 false。

您可以在以下情况下使用它:

short id;
if(Int16.TryParse(Request.QueryString["id"], out id))
{
    ProduktID = id;
}

警告非常冗长。你应该将 kundeID 解析为 short(或将 KundeID 更改为字符串)。

KundeID = short.Parse(kundeID);

如果输出是对象隐蔽到短可以看起来像那样

short var_short = short.Parse(Convert.ToString(reader["something"]));