我有一个函数foo(Random r)
,其输入中有一个Random。
有时随机是由用户给出的,然后不是Random类型,我不知道如何将int
或byte[]
等其他类型的值分配给Random
。
我的意思是有时我需要像foo(int r)
那样调用这个函数。
顺便说一下,我只是从一个dll调用这个函数而没有源代码。
如何将int
作为Random
传递?
答案 0 :(得分:1)
这个怎么样?
这只返回你设置的整数。
class NotRandom : Random
{
public int Integer{get;set;}
public NotRandom(int integer)
{
Integer = integer;
}
public override int Next()
{
return Integer;
}
public override int Next(int maxValue)
{
return Integer;
}
public override void NextBytes(byte[] buffer)
{
for (int i = 0; i < buffer.Length; i++)
buffer[i] = (byte)Integer;
}
protected override double Sample()
{
return (double)Integer;
}
public override int Next(int minValue, int maxValue)
{
return Integer;
}
public override double NextDouble()
{
return (double)Integer;
}
}
在样品功能
像
private int GetRandomNumber(Random rand)
{
return rand.Next();
}
然后,如果您按以下方式致电
int randNum = GetRandomNumber(new NotRandom(3));
randNum总是有3个你将NotRandom的构造函数作为参数传递。