我有C#方法:
public class HeaderType1BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var s = value as int;
var ret = (s == 3);
return !ret;
}
}
我需要做的是获取该对象(它将是一个整数),检查其值是否为3,如果是,则返回true。否则,如果它为null或不等于3,那么我想返回false。
但是我有一个问题,因为它说
错误CS0077:必须将as运算符与引用类型或 可为空的类型(“ int”为不可为空的值类型)(CS0077)(日语)
有人可以给我一些建议吗?
答案 0 :(得分:6)
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return object.Equals(value, 3);
}
答案 1 :(得分:3)
您不能将“ as”用于int,因为它是值类型。 您可以将可空类型与“ as”一起使用:
var s = value as int?;
答案 2 :(得分:1)
您在代码中做了一些错误的事情,这是您想要的固定代码:-
public class HeaderType1BoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var s = 0;
try{ s = (int)value; }catch(Exception e){ return false; }
return s != 3;
}
}
答案 3 :(得分:1)
两种方式:
第一是最直接的方法:
try
{
string x = "text or int";
int num = Convert.ToInt32(x);
Console.WriteLine("this num is an int: " + num);
}
catch(Exception ex)
{
Console.WriteLine("this num is not an int");
}
方法2 和GetType()
方法和typeof()
方法:
private bool isNumber(object p_Value)
{
try
{
if (int.Parse(p_Value.ToString()).GetType().Equals(typeof(int)))
return true;
else
return false;
}
catch (Exception ex)
{
return false;
}
}
答案 4 :(得分:1)
尝试使用以下经过测试的代码来消除错误。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (System.Convert.ToInt32(value)==3);
}