Cannot implicitly convert type 'Int' to 'T'

前端 未结 9 2299
甜味超标
甜味超标 2020-11-27 14:15

I can call Get(Stat); or Get(Name);

But when compiling I get:

Cannot implicitly convert typ

9条回答
  •  死守一世寂寞
    2020-11-27 14:54

    ChangeType is probably your best option. My solution is similar to the one provided by BrokenGlass with a bit of try catch logic.

    static void Main(string[] args)
    {
        object number = "1";
        bool hasConverted;
        var convertedValue = DoConvert(number, out hasConverted);
    
        Console.WriteLine(hasConverted);
        Console.WriteLine(convertedValue);
    }
    
    public static TConvertType DoConvert(object convertValue, out bool hasConverted)
    {
        hasConverted = false;
        var converted = default(TConvertType);
        try
        {
            converted = (TConvertType) 
                Convert.ChangeType(convertValue, typeof(TConvertType));
            hasConverted = true;
        }
        catch (InvalidCastException)
        {
        }
        catch (ArgumentNullException)
        {
        }
        catch (FormatException)
        {
        }
        catch (OverflowException)
        {
        }
    
        return converted;
    }
    

提交回复
热议问题