将String []转换为对象并返回String []?

时间:2012-04-12 20:57:28

标签: c# object casting split boxing

我将连接的字符串放入组件的Tag属性中:

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

现在我如何解决这个问题,因为Tag是一个对象?试着这样做:

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

我知道,“'object'不包含'Split'的定义,也没有扩展方法'Split'可以找到'object'类型的第一个参数

4 个答案:

答案 0 :(得分:8)

Tag的类型为object,但Split方法位于String。您需要将Tag投回String才能致电Split

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

答案 1 :(得分:0)

由于对象可以转换为任何其他数据类型,因此可以完全跳过string.Format()并指定字符串[]

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

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

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

答案 2 :(得分:0)

除非你有一些驱动需要它作为一个字符串另一种方式是一个结构,保持你的三个值,然后只是设置标签,并让它回来投射它。然后再没有形成和分裂。更重要的是,如果你添加第四项,重构结构,完成工作。

答案 3 :(得分:0)

Tag转换回string的安全方法是使用as关键字。如果Tag包含的内容不是string,则它不会抛出异常但会返回null

string s = Tag as string;
string[] someStuff = null;
if (s != null) {
    someStuff = s.Split(';');
}