2011-12-03 5 views
4

あるオブジェクトを別のオブジェクトに変換する静的メソッドがある場合、 はこのメソッドのスレッドセーフです。C#?静的メソッドのスレッドセーフです

public static AnotherDataClass Convert(MyDataClass target) 
{ 
    AnotherDataClass val = new AnotherDataClass(); 
    // read infomration from target 
    // put information into val; 
    return val; 
} 

ただ、質問をより明確にしたい....

コンバートメソッドInvoke ....我々はそのターゲットを変更することが予定されていないと仮定することができたとき。 Convertメソッドはターゲットの "attrubite"にのみ関心があるので

+7

他のスレッドによって書き込み可能なプロパティまたはフィールドはありませんか?その後、スレッドセーフではありません。 –

+0

"スレッドセーフ"が実際に最初に何を意味するのかを理解する必要があると思います。 – x0n

+2

あなたの例は静的メソッドではありません。 –

答えて

2

いいえ、それはありません。この定義は、この方法はスレッドセーフではありません正しい場合

「それは、他のスレッドにアクセスすることはできませんアクセスデータからBならばこの方法は、スレッドセーフされるだろう」

理由

MyDataClass私には参照型のように見えるかもしれないので、複数のスレッドがtarget変数を変更している可能性があります

+5

スレッドセーフではないと思う理由はわかりません。ロックは何を保護しますか? – Gabe

+0

ロックが削除されました。 –

関連する問題