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;