将字符串 [] 转换为对象,然后再转换回字符串 []

本文关键字:转换 字符串 然后 对象 | 更新日期: 2023-09-27 18:30:50

>我以这种方式将一个串联字符串放入组件的 Tag 属性中:

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

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

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

我得到,"'对象'不包含'拆分'的定义,并且找不到接受类型为'对象'的第一个参数的扩展方法'分裂'

将字符串 [] 转换为对象,然后再转换回字符串 []

Tag的类型是objectSplit方法在String。 您需要将Tag投射回String才能调用Split

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

由于对象可以强制转换为任何其他数据类型,因此可以跳过该字符串。完全格式化(),并分配一个字符串[]

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

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

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

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

Tag转换回string的安全方法是使用 as 关键字。如果Tag包含string以外的内容,则不会引发异常,而是返回null

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