2016-10-10 3 views
0

c#では、いくつかのシナリオで、異なるタイプ間で実行時に暗黙のキャストを行うことができるコンストラクタですか? タイプ 'System.Type'からいくつかのオブジェクトへ、またはオブジェクトを親に、または 'int'から 'double'にアップキャストするのと同じですか?C#では、いくつかのシナリオで異なるタイプ間の暗黙のキャストを行うことができるコンストラクタですか?

+0

実はコンパイラがないコンパイル時に、舞台裏明示的なキャストを追加しています。 – user3185569

+0

コンストラクタは、通常のメソッドまたはプロパティとして任意のメンバを呼び出すこともできます。 1つのタイプから別のタイプへキャストすることができますWheatherは*あなたがこれを行う*によって決定されていません。 – HimBromBeere

+0

私はあなたの質問を理解していません。あなたが意味するものを示すためにいくつかのサンプルコードを提供できますか? – Enigmativity

答えて

0

コンパイラは、オーバーロード解決プロセスで直接一致しないコンストラクタ(または任意のメソッド)と一致させるために、可能な場合はバックグラウンドで明示的なキャストを追加します。

例(Source):

using System; 
public class C 
{ 
    public void M() 
    { 
     int num = 1; 
     var f = new Foo(num); 
    } 
} 

public class Foo 
{ 
    public Foo(double a) 
    { 

    } 
} 

コンパイラ生成されるコード:

public class C 
{ 
    public void M() 
    { 
     int num = 1; 
     Foo foo = new Foo((double)num); 
    } 
} 
public class Foo 
{ 
    public Foo(double a) 
    { 
    } 
} 
関連する問題