Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot implicitly convert type 'T' to 'Int'

Tags:

c#

.net

generics

When trying to call this function in my code i get the error in the title. Also Operator '+=' cannot be applied to the operands of type 'int' and 'T'

public int Change<T>(Stats type, T value)
    {
        Dictionary<string, string> temp = new Dictionary<string, string>();
        temp = sql.Query(string.Format("SELECT {0} FROM player WHERE fbId='{1}'", type.ToString(), FBId));
        if (typeof(T) == typeof(int))
        {
            int t = Convert.ToInt16(temp[type.ToString()]);
            t += value;
            if (t < 0) return -1;
            PlayerStats[type] = t;

        }
        sql.Upload(string.Format("UPDATE player SET {0}='{1}' WHERE fbId='{2}'", type.ToString(), PlayerStats[type], FBId));
        return 0;
    }

I call the function by using:

Change<int>(type, 1);
like image 797
David W Avatar asked Nov 17 '11 16:11

David W


People also ask

Can not implicitly convert?

Cannot implicitly convert type 'type1' to 'type2'. An explicit conversion exists (are you missing a cast?) This error occurs when your code tries to convert between two types that cannot be implicitly converted, but where an explicit conversion is available.

What is generic type C#?

Generic is a class which allows the user to define classes and methods with the placeholder. Generics were added to version 2.0 of the C# language. The basic idea behind using Generic is to allow type (Integer, String, … etc and user-defined types) to be a parameter to methods, classes, and interfaces.


1 Answers

you can try casting the value like this ...

t += (int)value; 

or

t+= Convert.ToInt32(value);
like image 168
Glory Raj Avatar answered Oct 24 '22 16:10

Glory Raj