gpt4 book ai didi

c# - 无效的表达式项 'int' - 将对象转换为原始数据类型

转载 作者:行者123 更新时间:2023-11-29 00:12:50 24 4
gpt4 key购买 nike

我有一个类是 <string, string> 的字典。 ,它是“变量”的集合,由它们的键标识。我使用 MySQL 来存储它们,所以当我加载/保存它们时,我将其作为字符串来执行,因为 sql 没有“通用数据类型”。

当我想要检索一个值时,我需要将它转换为我需要的任何对象。所以我所做的是:

protected object GetVariable(string key, Type type = null)
{
string result;

this.Character.Variables.TryGetValue(key, out result);

if (type == null)
{
return result;
}

object value = Convert.ChangeType(result, type);

return value;
}

基本上,您传递 key 和要转换为的类型。如果为空,它将立即返回默认值(字符串)。如果不是,它将尝试转换为原始数据类型并将其返回。所以,我试着打电话:

int a = GetVariable("test", int);

但是,当我尝试使用 CodeDomProvider 编译这个文件时,它说:

Invalid expression term 'int'

这是为什么呢?我该如何解决?

我正在使用 C#。

最佳答案

您应该使用 typeof 传入一个类型运算符(operator)。这将为您提供 int 的实际 Type 实例:

int a = GetVariable("test", typeof(int));

您可以选择更改您的代码以使用泛型,如评论中所建议的:

protected T GetVariable<T>(string key)
{
string result;

this.Character.Variables.TryGetValue(key, out result);

if (result != null)
{
return Convert.ChangeType(result, typeof(T));
}
else
{
return default(T);
}
}

关于c# - 无效的表达式项 'int' - 将对象转换为原始数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24227812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com