我可以直接在“;如果“;表示
本文关键字:表示 如果 我可以 | 更新日期: 2023-09-27 17:50:34
我试图将对象仅用于表达式,但不确定这是否可能:
if ((new (Random)).Next(0,1))
{
}
这不起作用,我想知道这是否可能?
这将起作用。。。注意,你写的东西有多个错误(逻辑和语法(
if (new Random().Next(0,2) == 0)
您不是在声明一个对象,而是在创建一个对象。
创建对象的语法为new TypeName()
或new TypeName {}
。如果构造函数有参数,则必须使用语法new TypeName(par1, par2)
。
做new Random().Next(0, 1)
完全没用。。。因为它会生成一个0到1之间的随机数,所以排除了0和0,所以0:-(
其他"逻辑"错误:Random
对象应该被重用,而不是创建和使用一次然后丢弃。这是因为Random
对象"表示"一系列随机数(基于种子(。如果在短时间内创建多个Random
对象,它们通常会使用相同的种子,并生成相同的序列。CCD_ 8 100次中有99次。
你甚至可以做更多可怕的事情(注意粗体(。。。
Random rnd;
if ((rnd = new Random()).Next(0, 2) == 0)
这是因为赋值运算符=
"返回"赋值,所以将new Random()
赋值给rnd
,然后取赋值并将其用于.Next
。注意作业周围的附加括号。
如果你的问题真的是我可以直接在"If"表达式中声明一个对象吗,那么答案是否定的!不能在if
条件表达式中声明新变量。。。你不能做:
if ((Random rnd = new Random()).Next(0, 2) == 0)
C#中唯一允许这样做的关键字是for cycle
:
for (Random rnd = new Random()...
和using
(但这一个更有限,它只能在IDisposable
中工作(
这是不可能的,因为
- if条件仅检查布尔条件。即true或false
- 你的陈述既不正确也不错误
- if条件中的语句返回void(或定义的变量(
您需要将其更改为if(new Random((.next(0,2(==0(,您应该不会有任何问题。。。
您需要使用()
对其进行初始化。它仍然不返回任何boolean
结果,这对于if
条件来说是必须的。
这样做:
if (new Random().Next(0,2) == 1)