2012-04-12 20 views
0

私は、コンポーネントのTagプロパティにこの方法を連結した文字列を入れている:タグがオブジェクトであるとしてString []をオブジェクトに変換し、String []に戻しますか?

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

は今どのように私は、それを得るのですか?これを実行しようとすると:

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

私が得る、「'オブジェクトは、 『分割』と何の拡張メソッド 『スプリット』タイプの最初の引数を受け入れる 『オブジェクトが』

を見出すことはできなかったの定義が含まれていません。

答えて

8

TagのタイプはobjectですがSplit方法がStringである。あなたはSplit

string[] someStuff = ((string)Tag).Split(';'); 
を呼び出すためにバック Stringから Tagをキャストする必要があります対象と
0

はおよび他のデータ型からキャストすることができ、あなたは完全に)(String.Formatのをスキップし、文字列[]

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

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

又は使用のオブジェクトを割り当てることができ[] AThis、AThat、ATheOtherThingが異なるデータ型である場合。

0

あなたは別の方法は、あなたの3つの値が開催された構造体になり、文字列としてそれのためにいくつかの駆動の必要性を持っている場合を除き、その後、ちょうどそれにタグを設定し、それが戻ってそれをキャスト取得します。それ以上のフォーマッティングと分割はもう必要ありません。さらに重要なのは、4番目の項目を追加した場合、構造体をリファクタリングし、完了したことです。

0

Tagstringに戻す安全な方法は、asというキーワードを使用することです。 Tagは、それが例外をスローしませんstringよりも、何か他のものが含まれていますがnull

string s = Tag as string; 
string[] someStuff = null; 
if (s != null) { 
    someStuff = s.Split(';'); 
} 
を返す場合