C# 运算符不能应用于字符串和int类型的操作数
错误:C# 运算符不能应用于字符串和int类型的操作数,c#,C#,错误: 运算符“详细信息[0]。max是一个字符串,因此您需要转换为int,下面的代码允许格式不正确的字符串,如果字符串无效,int.Parse将引发异常: if (!string.IsNullOrEmpty(details[0].customsalary) && int.TryParse(details[0].max, out var max) && int.TryParse(details[0
运算符“详细信息[0]。max是一个字符串,因此您需要转换为int,下面的代码允许格式不正确的字符串,如果字符串无效,int.Parse将引发异常:
if (!string.IsNullOrEmpty(details[0].customsalary) &&
int.TryParse(details[0].max, out var max) &&
int.TryParse(details[0].min, out var min) &&
max <= 0 && min <= 0)
{
_jobdetailsmodel.Salary = details[0].customsalary;
}
if(!string.IsNullOrEmpty)(详细信息[0].customsalary)和
int.TryParse(详细信息[0].max,out var max)和
int.TryParse(详细信息[0].min,out-var-min)&&
max似乎“details[0].max”是字符串类型,因此请将其转换为Double as:
Convert.ToDouble(details[0].max)
显式地将详细信息[0].max
转换为一个数字,类似
if (!string.IsNullOrEmpty(details[0].customsalary) && decimal.Parse(details[0].max) <= 0)
if(!string.IsNullOrEmpty(详细信息[0].customsalary)&&decimal.Parse(详细信息[0].max)问题在于.max变量可能是字符串。下面的代码应该足以让if语句通过在if语句中将它们转换为整数来工作。
不过,我建议您检查代码,并可能将这些变量转换为整数,以避免转换它们的值
if (!string.IsNullOrEmpty(details[0].customsalary) && Convert.ToInt32(details[0].max) <= 0 && Convert.ToInt32(details[0].max) <= 0)
{
_jobdetailsmodel.Salary = details[0].customsalary;
}
如果(!string.IsNullOrEmpty(details[0].customsalary)&&Convert.ToInt32(details[0].max)details
是什么的数组?和max
,它是一个int
,一个double
,还有什么
有一个详细信息类的示例:
public class Detail1
{
public string CustomSalary { get; set; }
public int Max { get; set; }
public decimal Max2 { get; set; }
}
它可以是:
public class Detail2
{
public string CustomSalary { get; set; }
public string Max { get; set; }
public string Max2 { get; set; }
}
请说得更具体些
使用Detail2
类,您可以使用Parse
扩展方法(数值类型具有此扩展方法):
如果您不确定是否有任何值(在详细信息[0]
中),可以在详细信息[0]
之后添加?
,和/或使用TryParse
扩展方法:
if(!string.IsNullOrWhiteSpace(detail[0].CustomSalary)
&& int.Parse(details[0].Max) <= 0
&& decimal.Parse(details[0].Max2 <= 0.0m))
{
//....
}
int.TryParse(details[0].Max, out int max);
decimal.TryParse(details[0]?.Max2, out decimal max2);
if(!string.IsNullOrWhiteSpace(detail[0]?.CustomSalary)
&& max <= 0
&& max2 <= 0.0m)
{
//....
}
int.TryParse(详细信息[0].Max,out int Max);
decimal.TryParse(详细信息[0]?.Max2,小数点以外的Max2);
如果(!string.IsNullOrWhiteSpace)(详细信息[0]?.CustomSalary)
&&maxdetails[0]的类型是什么。max
?details[0]。字符串类型的max。因此使用convert.ToSingle(details[0]。max)
为什么.customsalary
和.max
等成员在概念上都是金额,即数字,声明为字符串
?当然,您可以将这些字符串解析为十进制
或类似类型(请参见下面的许多答案),但感觉这些属性应该是十进制
类型。
if(!string.IsNullOrWhiteSpace(detail[0].CustomSalary)
&& Convert.ToInt(details[0].Max) <= 0
&& Convert.ToDecimal(details[0].Max2 <= 0.0m))
{
//....
}
int.TryParse(details[0].Max, out int max);
decimal.TryParse(details[0]?.Max2, out decimal max2);
if(!string.IsNullOrWhiteSpace(detail[0]?.CustomSalary)
&& max <= 0
&& max2 <= 0.0m)
{
//....
}