将字符串转换为local int进行计算

时间:2015-04-26 18:51:48

标签: c# converter

我正在尝试计算一些属性,但我不知道该怎么做。 比例属于string类型,我知道string值无法计算。所以我想把它们变成int。

    public class ItemProperties
            {
                public string Item { get; set; }
                public string Description { get; set; }
                public string Quantity { get; set; }
                public string UnitPrice { get; set; }
                public string Tax { get; set; }

                public int TotalPay { get { return Quantity * UnitPrice; } set; }
                 //Now I get error on the line above because string can't calculate

            }
  

运算符'*'不能应用于'string'类型的操作数   '字符串'

所以基本上我需要将string QuantityUnitPrice转换为本地int变量,然后使用它们进行计算。任何人都可以帮助我吗?

更新

以下是将属性分配给string[]

的代码
var lines = File.ReadAllLines(openFileDialog.FileName);
for (var i = 9; i + 2 < lines.Length; i += 6)
            {
                Items.Add(new ItemProperties { 
                    Item = lines[i],
                    Description = lines[i + 1],
                    Quantity = lines[i + 2],
                    UnitPrice = lines[i + 3],
                    Tax = lines[i + 4]
                });
            }
            itemlst.ItemsSource = Items;

2 个答案:

答案 0 :(得分:3)

快速方式(无错误检查)将是:

    public int TotalPay { get { return Convert.ToInt32(Quantity) * Convert.ToInt32(UnitPrice); } }

更强大的版本:

    public int TotalPay
    {
        get
        {
            int qty;
            int price;

            if (int.TryParse(Quantity, out qty) && int.TryParse(UnitPrice, out price))
            {
                return qty * price;
            }

            return 0;
        }
    }

这解决了您当前的问题,但如果属性包含int数据,则应将它们定义为int。

将它们分配给字符串数组的代码应该将int属性转换为字符串,而不是相反。

修改 这会将从文件中读取的字符串属性转换为int。请注意,如果文件中的值不是整数,则会导致错误。你应该有一些错误处理来满足它。

public class ItemProperties
{
    public string Item { get; set; }
    public string Description { get; set; }
    public int Quantity { get; set; }
    public int UnitPrice { get; set; }
    public string Tax { get; set; }

    public int TotalPay
    {
        get
        {
            return Quantity * UnitPrice;
        }
    }
}

    var lines = File.ReadAllLines(openFileDialog.FileName);

    for (var i = 9; i + 2 < lines.Length; i += 6)
        {
            Items.Add(new ItemProperties
            {
                Item = lines[i],
                Description = lines[i + 1],
                Quantity =  Convert.ToInt32(lines[i + 2]),
                UnitPrice = Convert.ToInt32(lines[i + 3]),
                Tax = lines[i + 4]
            });
        }
        itemlst.ItemsSource = Items;

答案 1 :(得分:0)

如果提到的属性表示整数数据,则应使其成为整数。 您可以使用静态Convert类将字符串解析为整数,例如:

public class ItemProperties
{
    public string Item { get; set; }
    public string Description { get; set; }
    public int Quantity { get; set; }
    public int UnitPrice { get; set; }
    public int Tax { get; set; }

    public int TotalPay { get { return Quantity * UnitPrice; } set; }

}

使用:

ItemProperties prop;
try
{
    prop.Quantity = Convert.ToInt32(stringVar);
}
catch(FormatException)
{
    // error handling
}