2017-03-24 5 views
0

は、このクラスと演算子のオーバーロードを取る:このオペレータはC#で扱う負荷がどのような状況ですか?

public class Test 
{ 
    public static Test operator +(Test test) 
    { 
     return test; 
    } 
} 

単に今の「test」を返す実装を無視して、どのような状況で、この演算子のオーバーロードが呼び出されるのでしょうか?それは有効でコンパイルされていますが、私はそれが何のために働くことができません!

これは1つのパラメータしか必要としないので、何を追加していますか?

+2

単調な+ +演算子があります。それは否定の反対のようなものです。 https://msdn.microsoft.com/en-us/library/aa691365(v=vs.71).aspx。明らかに誰かが '+ someTestObject'を実行した場合に呼び出されます。 – itsme86

+0

'+'が 'Test'のインスタンスに適用されているときに、プロパティの値を増やしたいのですか?私はあなたがなぜそう思っているのかわかりませんが、そこには何人かの狂った開発者がいるかもしれません... –

+0

それは正確に何かです(下記の答えを参照してください)、それは私を夢中にしていますが、これを考えないで! – joshcomley

答えて

3

何を追加していますか?

ある意味では極性を決めるとは思えません。 私はそれがこれがうまくコンパイル

int i = +5; 

に負などポジティブという標識に匹敵するだろうと思います。

Test t1 = new Test();  
Test t2 = +t1; 

が、これはそうではない:

Test t4 = -t1; 

それはコンパイル添加後に

public static Test operator -(Test test) { return test; } 
ここ

は単項+演算子

単項プラス演算子の結果(+)に言いたいことMSDNでそのオペランドの値が

単項否定演算子は

である( - )マイナス生成しますそのオペランドの

+1

それだけです!それは理にかなっている。私は4分で答えることができます... – joshcomley

関連する問題