当前位置: 首页 > 编程语言 > C#

无法将类型’T’隐式转换为’Int’分享

时间:2023-04-11 11:07:40 C#

C#学习教程:无法将类型'T'隐式转换为'Int'运算符'+='也不能应用于'int'和'T'类型的操作数publicintChange(Statstype,Tvalue){Dictionarytemp=newDictionary();temp=sql.Query(string.Format("SELECT{0}FROMplayerWHEREfbId='{1}'",type.ToString(),FBId));如果(typeof(T)==typeof(int)){intt=Convert.ToInt16(temp[type.ToString()]);t+=值;如果(t<0)返回-1;PlayerStats[类型]=t;}sql.Upload(string.Format("UPDATEplayerSET{0}='{1}'WHEREfbId='{2}'",type.ToString(),PlayerStats[type],FBId));返回0;我调用函数:Change(type,1);您可以尝试像这样的Castingvalue...t+=(int)value;或t+=Convert.ToInt32(value);您可以设置约束:publicintChange(Statstype,Tvalue)whereT:IConvertible然后:varintValue=value.ToInt32();或另一种方式(对象转换不是错字)t+=(int)(object)value;或使用动态,通过使用动态,您可以做更多类似隐式转换或使用Int32-Int32和int是内部结构。没有性能损失。它不知道如何将T添加到数字中,因为它不知道T是什么类型。t+=Convert.ToInt32(值);但是既然你要将int添加到int并返回int那么为什么不删除泛型参数并将其设为publicintChange(Statstype,intvalue)如果你想要不同类型的不同行为,并且真的想要相同的方法名称,但不是测试类型,只需执行:publicintChange(Statstype,stringvalue)publicintChange(Statstype,DateTimevalue)您得到的错误将很快出现。当你调用类型为int的方法时,编译器并不知道这种情况。要按原样编译方法,编译器需要证明您对T执行的操作对所有T都有效——显然不是这样。以上就是C#学习教程的全部内容:'T'类型不能隐式转换为'Int'。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络收集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢