Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运算符不能应用于字符串和int类型的操作数_C# - Fatal编程技术网

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)

&&max
details[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)
{
    //....
}