2011-07-12 12 views
1

そのようなデータテーブルに割り当てる必要があります。デリゲートを使用した条件付き割り当て

のDataTableがnullの場合、新しい明確なデータテーブル他のDataTable

私は

これは代表者または匿名メソッドを使用して可能になりますどのように
datatable= (datatable== null) ? 
    new DataTable() : 
    delegate(){datatable.Clear(); return datatable;}); 

を書かれているコードを作成?可能な限り短いコードを使用する。

+0

これはあなたの質問に対する回答ではありませんが、最短のコードが必ずしも最良のコードであるとは限りません。このシナリオでは、通常のif文を使用するほうがよいでしょう。そうすれば、コードは読みやすく分かりやすくなります。 – DoctorMick

+0

私はちょうど代議員を勉強しています。そして、代議員を通じてこれが可能であるのだろうかと思っていました。(ちょうど学びのため) –

答えて

6

あなたはになります。は代理人を使用できますが、実際はそうではありません。私は使用したい:

if (dataTable == null) 
{ 
    dataTable = new DataTable(); 
} 
else 
{ 
    dataTable.Clear(); 
} 

それはIMO、やっているものに関してたくさん明確だこと。

ここではデリゲートのバージョンは、そのすべてのhideousnessにあります:

dataTable = dataTable == null ? new DataTable() : 
    ((Func<DataTable>)(() => { dataTable.Clear(); return dataTable; }))(); 
+1

@Zain:そのコメントの意味は何もありません。編集:さて、私は自分でコンパイルしました。これは例外ではなく、コンパイル時のエラーです。 **メソッド名** ** ** ** **を除いては期待していない**。大きな違い。私は今それを修正しました - より多くの括弧が必要でした... –

+0

"例外"は "期待"ですが、まだ何を意味するのかわかりません@Zain – Smudge202

+0

@ Smudge202:彼は自分のコードをコンパイルしようとしました。コンパイルされませんでした。彼はかなり明確になっている可能性があります... –

2

あなたは多分このような何かを意味ですか?

Func<DataTable, DataTable> datatable = (n => { 
    if (n == null) 
     n = new DataTable(); 
    else 
     n.Clear(); 
    return n; }); 
関連する問題