SHA256クラスでは、メソッドCreateは「System.Security.Cryptography.SHA256 のデフォルト実装のインスタンス」を返す静的メソッドです (メソッドのドキュメントによると)。このデフォルトの実装はSHA256Managed- の非抽象子クラスですSHA256。
SHA256とクラスはSHA256Managed同じアセンブリで定義されているため、は有効なクラスとしてSHA256Managed使用できます。SHA256.Create
Create非抽象派生クラスのインスタンスを作成する静的メソッドを持つ抽象基本クラスの例を次に示します。
public abstract class A
{
public static A Create()
{
return new B();
}
public abstract void DoSomething();
}
public class B : A
{
public override void DoSomething()
{
// do nothing.
}
}
実際には、コンパイラはアセンブリ全体のクラスとそのメンバーのリストを作成してから、それらのメンバーのコードをコンパイルします。そのため、A.Createメソッドがコンパイルされるまでに、コンパイラは class の存在と構造を既に認識していBます。
そのため、次のように、プロパティとメソッドを参照する最初のポイントの後にクラスに配置しても問題ありません。
class C
{
void some_method()
{
++counter;
}
int counter;
}
Cコンパイラは、コードをコンパイルする前にクラスの構造全体を認識しているため、エラーなしsome_methodでステートメントをコンパイルできます。++counter;