インターフェイスの範囲について、他のプログラマーと争っています。
次のものがあるとします。
public interface IFoo
{
string Bar { get; set; }
}
public class SomeFoo: IFoo
{
public string Bar { get; set; }
public SomeFoo(string bar)
{
this.Bar = bar;
}
}
public class Consumer
{
public void DoSomething()
{
SomeFoo fooClassInstance = new SomeFoo("test");
IFoo fooInterface = (IFoo)fooClassInstance;
// do something with fooInterface.
}
}
したがって、問題は次のとおりです。1.他の何かがfooInterfaceインスタンスを解放する前に、fooClassInstanceがスコープ外になる可能性はありますか?
オブジェクト(fooClassInstance)がスコープ外になる可能性があると主張する人もいます。
私はそれができないと信じています。確かに、オブジェクトがスコープ内にないとGCが判断した場合、オブジェクトはGCによって破棄される場合とされない場合があります。ただし、インターフェイスは設計上、それを使用するオブジェクトによってメンバーを実装する必要がある抽象コントラクトであるため、インターフェイスが使用されている限り、インターフェイスはその実装を失うことはありません。「interface」タイプの別のオブジェクトが作成されるわけではありません。インターフェイスは、実装者の抽象メンバーへのポインタにすぎません。
この論争を解決するのを手伝ってくれませんか。
ありがとう、
<bleepzter />