我以这种方式将连接的字符串放入组件的 Tag 属性中:
Tag = String.Format("{0};{1};{2}", AThis, AThat, ATheOtherThing);
现在我该如何把它弄出来,因为 Tag 是一个对象?尝试这样做:
String[] someStuff = Tag.Split(';');
我明白了,“ ‘object’不包含‘Split’的定义,并且找不到接受‘object’类型的第一个参数的扩展方法‘Split’
的类型Tag
是,object
但Split
方法是 on String
。您需要转换Tag
回String
才能调用Split
string[] someStuff = ((string)Tag).Split(';');
由于对象可以转换为任何其他数据类型,您可以完全跳过 string.Format(),并分配一个 string[]
Tag = new string[] { AThis, AThat, ATheOtherThing };
和
string[] someStuff = (string[])Tag;
如果 AThis、AThat、ATheOtherThing 是不同的数据类型,则使用 object[]。
除非你有一些驱动需要它作为一个字符串,否则另一种方式是一个保存你的三个值的结构,然后只需将标签设置为它,然后将它重新转换为它。然后不再进行格式化和拆分。更重要的是,如果您添加第四项,重构结构,工作就完成了。
一种安全的转换方式Tag
是string
使用as
关键字。如果Tag
包含除 a 以外的其他内容,string
它不会抛出异常而是返回null
string s = Tag as string;
string[] someStuff = null;
if (s != null) {
someStuff = s.Split(';');
}