【发布时间】:2025-12-18 13:00:02
【问题描述】:
我正在制作一个程序,当输入一个元素的化学符号时,它会将该元素的信息返回到表单上。这很简单,但它想尝试让我的代码尽可能高效。
我的字典:
Dictionary<string, object> alkaliM = new Dictionary<string, object>();
也在我的代码中:
alkaliM.Add("Li", new AlkaliMetals.Lithium());
elementSymbol 是我从文本框中输入的字符串
我正在尝试将elementName.Text 设置为我的AlkaliMetals.Lithium 对象的属性“name”。但是,我不能简单地说:
elementName.Text = alkaliM[elementSymbol.Text]; 因为我无法将对象设置为字符串。 ("Cannot implicty convert type "object" to "string"")
有没有办法只使用密钥将elementName.Text 设置为AlkaliMetals.Lithium.name?
我有一个单独的文件,其中有一个主类 AlkaliMetals 和每个碱金属的子类,如 Lithium。
如果我的描述没有意义,请告诉我,我会尽力解释我的意思。
【问题讨论】:
-
elementName.Text = alkaliM[elementSymbol.Text].name? -
@EhsanSajjad 不起作用,因为字典被定义为
<string, object>。它需要一个演员表。 -
不要使用
object作为引用类型,而是使用每个元素派生自的基类。并访问您的姓名:alkaliM[elementSymbol.Text].namesimple -
为什么首先将
System.Object存储为Value?我想有一个通用的基本类型或接口都实现了。 -
@stuartd 啊对,我错过了它是
object:/
标签: c# object dictionary casting key