2016-07-06 11 views
3

PowershellでテキストをASCII番号に変換していて、ToByte()で問題が発生しました。私が文字列のメソッドを見たときに、それらのうちのいくつかはインターフェイスプレフィックスで表示されていますが、ほとんどの場合は表示されません。Powershellのいくつかのメソッドが定義でインターフェイスを使用する理由

誰も私にこれらの定義の違いを教えてもらえますか?
なぜがIConvertibleで始まっていますが、PadLeft()で始まるのはなぜですか?
なぜToString()に両方の記法があるのですか?

screenshot

+0

可能性のある重複した[.netインターフェイスの説明](http://stackoverflow.com/questions/2021777/net-interface-explanation) – TessellatingHeckler

+0

@TessellatingHeckler私はその質問またはその答えが特定の方法Stringクラスの明示的なインターフェイス名が明示的に表示されます。 – briantist

答えて

3

インターフェイス名を指定して、これらのメソッドはExplicit Interface Implementationsあるため。

クラスは 同じシグネチャを持つメンバーを含む2つのインタフェースを実装する場合、そのクラスにそのメンバーを実装する 両方のインターフェイスがそれらの実装として、その部材を使用します。

ただし、2つのインターフェイスメンバーが同じ機能を実行しない場合は、 インターフェイスのいずれかまたは両方が正しく実装されない可能性があります。インターフェイスメンバ を実装して、 インターフェイスを介してのみ呼び出され、そのインターフェイスに固有のクラスメンバを明示的に作成することは可能です。これは、 によって、インターフェイスの名前とピリオドでクラスメンバを命名します。

明示的な実装は、 のプロパティとメソッドのように、2つの インターフェイスが同じ名前の異なるメンバを宣言する場合を解決するためにも使用されます。

また、これはString class documentation under Explicit Interface Implementationsにリストされています。

+0

リンクをありがとう。 Stringクラスのドキュメントと動作をPowershellと比較すると、 "C#Stringクラスは.ToByte()を実装していませんが、Powershell文字列クラスはIConvertibleを使用して提供します。したがって、インターフェイスの主要な名称は、ユーザーがC#とPowershellの違いを理解するのに役立ちます。 – edkeith

関連する問題