【问题标题】:Error using RandomNumberGenerator does not have create function使用 RandomNumberGenerator 的错误没有创建功能
【发布时间】:2021-04-15 23:50:38
【问题描述】:

我尝试使用 RandomNumberGenerator 而不是 new Random 来生成加密随机数,但显示此错误 RandomNumberGenerator 不包含 Create

的定义
using System.Security.Cryptography;
.
.
.
private int example()
{
    int number = RandomNumberGenerator.Create();
    .........
    .........
    return number;
}

【问题讨论】:

  • 您可能需要重新检查RandomNumberGenerator.Create()的返回类型
  • 它不起作用
  • 嗨@mar​​cus,供您参考,RandomNumberGenerator.Create() 将返回RandomNumberGenerator 的实例,因此您将收到错误,因为您将其分配给类型不匹配的int 变量。 RandomNumberGenerator.Create Method
  • .Net 5 支持以RandomNumberGenerator.GetInt32 Method 返回int 类型。因此,您可以评估您的项目框架是否支持 .NET 5 或寻找其他解决方案。谢谢。

标签: c# asp.net .net c#-4.0


【解决方案1】:

如果你去System.Security.Cryptography类,你会看到Create()方法返回RandomNumberGenerator,所以你不能把它放在int变量中。

改为使用此语法。

private static RandomNumberGenerator rng = RandomNumberGenerator.Create();
    private static int GenerateSomeStatic(int size)
    {
        var Some = new byte[size];
        rng.GetBytes(Some);
        int a = BitConverter.ToInt32(Some);
        return a;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2020-04-22
    • 1970-01-01
    • 2018-01-10
    • 2016-07-06
    • 2019-09-15
    • 2014-03-03
    • 2019-02-01
    相关资源
    最近更新 更多