2012-04-23 5 views
1

は私がより正確またはより良い練習と見なされている知っていただきたいと思いますこのようなコードの値を次のように変換します。C#がクラスのプロパティの値を変換するときに

foo myFoo = new foo(); 
myFoo.Amount = Convert.ToSingle(somevalue); 

データベースから値(somevalue)を取得するので、すべての値をクラスに簡単に渡してそこのすべての変換を処理する(またはデータアクセスレイヤーで変換を行う)ことが簡単にできます。私はちょうど良い練習(または私が考えなかった何か)を知りたい。行動の違いにもかかわらず

+0

2番目の方が読みやすくなります。 –

+1

あなたの最初の例は、それがプロパティ型なので、とにかく 'Single'によって制約されています。 'value'が暗黙的にキャストされない限り、決してあなたのセッターには入りません。 – Marc

+1

最初の1つは、単一のプロパティを取得するために1つしか渡すことができないため動作しません。 Convert.ToSingleは何もしません。 – zeal

答えて

4

無視できるべきであるもう一つはIMO間違いなく好ましい。

public Single Amount { get; set; } 

あなたのクラスが明らかにされていないバックグラウンドで不明瞭なことをやってほしくありません外側から(型キャストのように)

クラスのプロパティ形式に準拠するのは外部コードの仕事ですが、それ以外の方法はありません。

0

は、パフォーマンスが

+1

彼らは同じではない、行動は異なっている。 –

0

彼らは短いバージョンを指定している主な理由は、あなたが全体の長いバージョンを記述する必要はありませんので、あなたは短いバージョンから始めなければならないようなものである:

public Single Amount { get; set; } 

暗黙的な変換が非常にあります悪意のあるアイデアでは、明示的な変換が必要なことは、変換が進行中であり、関数が誤って何かを取っていないことをユーザーが知っていることです。プロパティ内でコンバージョンを行うと、プロパティはオブジェクトを期待していることを考慮してください。そのオブジェクトはSingleに変換可能なオブジェクトなのでエラーの可能性があります。

何らかの理由で彼が何か間違ったことを割り当てたことをあなたの財産のユーザが発見したくない場合は、コンパイラが何らかの理由で先に警告するようにしたいデバッグしています。

あなたに与えるものを変換するのはあなたの責任ではなく、むしろ彼らにシングルを与えることを期待してください。

関連する問題