Randomクラスと同様、RandomNumberGeneratorクラスで乱数を生成するためにはまずインスタンスを作成する必要があります。 RandomNumberGeneratorは抽象クラスであるため、インスタンスはnew
による作成ではなく、Createメソッドを使って作成します。
.NET Framework 4.0以降のRandomNumberGeneratorはIDisposableインターフェイスを実装しています。 そのため、usingステートメントを使って次のようにインスタンスの作成・破棄を行います。
RandomNumberGeneratorインスタンスの作成と破棄
Imports System
Imports System.Security.Cryptography
Class Sample
Shared Sub Main()
' RandomNumberGenerator.Createメソッドでインスタンスを作成する
Using rng As RandomNumberGenerator = RandomNumberGenerator.Create()
' 以下、インスタンスを使用するコードを記述する
Dim nonce(15) As Byte
rng.GetBytes(nonce)
End Using
' Usingステートメントから抜けた時点で、インスタンスが自動的にDisposeされる
End Sub
End Class
RandomNumberGenerator.Createメソッドに引数(乱数ジェネレータの名前)を指定せずに作成したインスタンスの場合はデフォルトの乱数ジェネレータが生成されます。
デフォルトのジェネレータに対してはDisposeメソッドを呼び出す必要はないようですが、乱数ジェネレータの種類によってはアンマネージリソースの解放が必要な実装となっている可能性があるため、usingステートメントによって必ずDisposeメソッドが呼び出されるようにしておくのが無難です。
usingステートメントとインスタンスの破棄についてはオブジェクトの破棄 §.usingステートメントを参照してください。