2011-06-12 68 views
-2

我有两个字符串,g1和g2。我随机决定是否使用g1或g2,就像cointoss一样。我怎么去做一些像g + coin();输出g1或g2,具体取决于coin()返回的内容?使用数值c返回的整数#

+2

你有什么尝试?它工作吗?如果不是,为什么不呢?就像现在这样,这是“不是真正的问题”。 – 2011-06-12 21:34:10

+0

你是怎么编写'coin'方法的?添加一些代码。 – Amy 2011-06-12 22:42:07

回答

2

如何只:

return (coin() == 'heads' ? g1 : g2); 
+0

这是我弹出一个'switch'声明时弹出!时间喝咖啡...... – aligray 2011-06-12 21:35:37

0

同时存储在磁盘阵列:

string[] g = { "g1", "g2" }; 

然后,滚动随机数:

var random = new Random(); 
int index = random.Next(2); 

最后,获得在该字符串索引:

string choice = g[index]; 
1
string SelectOne(string g1, string g2) 
{ 
    return (new Random().NextDouble() > 0.5) ? g1 : g2; 
} 
+0

可能考虑使用静态随机实例或类中的至少一个实例,以便对“SelectOne”的快速调用不会导致相同的“随机”值。 – vcsjones 2011-06-12 21:37:29

0

你不能在C#中的局部变量名工作(尽管你可以通过反射型成员名称工作)。

您可以使用普通的老if

if (coin() == 1) 
    result = g1; 
else 
    result = g2; 

,或者你可以使用一个数组:

var gs = new[] { g1, g2 }; 
var result = gs[coin() - 1]; 
0

使用此代码:

Random rd = new Random(); 

string strtouse = "g" + (rd.Next(2) + 1); 

现在U可以使用以下snippet to

string test = (string)this.GetType().GetField(strtouse).GetValue(this); 

虽然这不是实现你想要的东西的好方法。使用字典是一种更好的方法。