2016-05-15 7 views
0

ListSearchReplace構造体で埋める必要があります。 構造体にReplaceValueフィールドが必要です。これは、整数などの他の型を受け入れるか、または下流のロジックに使用できる列挙型にする必要があります。そのフィールドの1つを持つ共通構造体を渡す方法は、複数の型を取る

私は確かにReplaceValueタイプのオブジェクトを作ることによってボクシングを避けたいと思います。

public struct SearchReplace 
{ 
    public SearchReplace(string data, string searchValue, string replaceValue) 
    { 
     this.Data = data; 
     this.SearchValue = searchValue; 
     this.ReplaceValue = replaceValue; 
    } 

    string Data; 
    string SearchValue; 
    string ReplaceValue; 
} 

public List<SearchReplace> edits; 
+0

大きく依存します。単一のリストでは、 'replaceValue'は常に同じ型ですか?たとえば、すべてのintまたはすべての列挙型、または 'replaceValue'を単一のリストに混在させることができますか? –

+1

'public SearchReplace(string data、string searchValue、T replaceValue)'の汎用ソリューションについて考えましたか? –

+0

@エヴァントリンブル。 1つのリストに複数のタイプを含めることができます。 – user1701153

答えて

0

構造体は汎用として実装されています。

public struct SearchReplace<T> 
{ 
    public SearchReplace(string data, string searchValue, T replaceValue) 
    { 
     this.Data = data; 
     this.SearchValue = searchValue; 
     this.ReplaceValue = replaceValue; 
    } 

    string Data; 
    string SearchValue; 
    T ReplaceValue; 
} 

Tは、構造体に必要な実際のタイプのプレースホルダです。このように実装することができます。

 var intSearchReplace = new SearchReplace<int>("data", "searchValue", 15); 
     var stringSearchReplace = new SearchReplace<string>("data", "searchValue", "stringReplaceValue"); 

残念ながら、このような何かをすることはできません。

public List<SearchReplace> edits; 

これは必要です。

public List<SearchReplace<int>> edits; 

あなたがリストに文字列バージョンを追加することはできません>、あなたが作成したジェネリック型のバージョンごとに異なるリストを持っている必要があります。

関連する問題