0

我以这种方式将连接的字符串放入组件的 Tag 属性中:

Tag = String.Format("{0};{1};{2}", AThis, AThat, ATheOtherThing);

现在我该如何把它弄出来,因为 Tag 是一个对象?尝试这样做:

String[] someStuff = Tag.Split(';'); 

我明白了,“ ‘object’不包含‘Split’的定义,并且找不到接受‘object’类型的第一个参数的扩展方法‘Split’

4

4 回答 4

8

的类型Tag是,objectSplit方法是 on String。您需要转换TagString才能调用Split

string[] someStuff = ((string)Tag).Split(';');
于 2012-04-12T20:58:19.770 回答
0

由于对象可以转换为任何其他数据类型,您可以完全跳过 string.Format(),并分配一个 string[]

Tag = new string[] { AThis, AThat, ATheOtherThing };

string[] someStuff = (string[])Tag;

如果 AThis、AThat、ATheOtherThing 是不同的数据类型,则使用 object[]。

于 2012-04-12T21:04:58.037 回答
0

除非你有一些驱动需要它作为一个字符串,否则另一种方式是一个保存你的三个值的结构,然后只需将标签设置为它,然后将它重新转换为它。然后不再进行格式化和拆分。更重要的是,如果您添加第四项,重构结构,工作就完成了。

于 2012-04-12T21:20:01.770 回答
0

一种安全的转换方式Tagstring使用as关键字。如果Tag包含除 a 以外的其他内容,string它不会抛出异常而是返回null

string s = Tag as string;
string[] someStuff = null;
if (s != null) {
    someStuff = s.Split(';');
}
于 2012-04-12T21:23:43.737 回答