我正在尝试计算一些属性,但我不知道该怎么做。
比例属于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
Quantity
和UnitPrice
转换为本地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;
答案 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
}