我如何测试对象以查看它是否是一个值为3的int?

时间:2018-07-22 11:59:44

标签: c#

我有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)(日语)

有人可以给我一些建议吗?

5 个答案:

答案 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);
    }