我写了下面的代码。
static void Main(string[] args)
{
var xyz = 10 < 11 ? 12 : 5 < 21 ? getValue() : 15;
Console.WriteLine(xyz);
Console.ReadLine();
}
static int getValue()
{
Console.WriteLine("hello");
return 100;
}
由于第一个条件始终为true,因此xyz将获得的值为12,但是由于条件运算符本身是正确的关联,因此我期望getValue()函数将首先执行,并且将输出“ hello”。当我运行此代码时,它不会以这种方式运行。
有人可以启发我这种行为。
参考方案
这个:
var xyz = 10 < 11 ? 12 : 5 < 21 ? getValue() : 15;
被视为:
var xyz = 10 < 11 ? 12 : (5 < 21 ? getValue() : 15);
因此,我们有一个条件表达式:
条件:10 < 11
第一分支:12
第二个分支:5 < 21 ? getValue() : 15
由于10 < 11
为true,因此将评估第一个分支,但不评估第二个分支。
在您的代码中不像在每个操作数上使用bool
表达式的代码那样容易显示关联性,因为可以使用任何一种关联性进行编译。
考虑以下代码:
using System;
class Test
{
static void Main()
{
var xyz = Log(1, true) ? Log(2, true) : Log(3, true) ? Log(4, false) : Log(5, true);
}
static bool Log(int x, bool result)
{
Console.WriteLine(x);
return result;
}
}
为了简单起见,将每个Log(x, ...)
重命名为Lx
,我们有:
var xyz = L1 ? L2 : L3 ? L4 : L5;
可以这样处理:
// Right associativity
var xyz = L1 ? L2 : (L3 ? L4 : L5);
// Left associativity
var xyz = (L1 ? L2 : L3) ? L4 : L5;
在返回结果的情况下,我们希望看到的是右结合性,结果为1、2。使用右结合性,我们看到的结果为1,2,4。关联性。
如何在C#中的循环过程中多次更改控件的属性 - c#我正在尝试做这样的事情:int i; while(true) { label1.Text = i.ToString(); i++; Thread.Sleep(500); } (实际上,我正在尝试做更复杂的事情,这更有意义,但这只是我的问题的一个简单示例)我期望标签的文本每1/2秒更改一次..但是它被卡住了。谢谢 参考方案 您不能让GUI线程进入睡眠状态(因为…
如何在C#Linq中找到集合的最小差异对象 - c#我有收藏Class MyData { int f1; int f2; int f3; int f4; } var mycollection =List<MyData>(); 我需要返回字段f1和f3之间具有最小差异的对象。我在下面查询了mycollection.select(obj => obj.f1 - obj.f3).Min(); 但是…
如何在C#中使用Telegram API发送消息 - c#我想在C#中使用Telegram API将简单消息发送给号码。我在GitHub上找到了一些lib,但是我无法使用它们。谁能给一个简单的代码?我可以简单地进行HTTP调用吗? 参考方案 安装包电报使用Botfather创建一个Bot使用/ token命令获取api密钥(仍在botfather中)使用此代码:var bot = new Api("you…
如何在C++应用程序中访问Java方法 - java只是一个简单的问题:是否可以从c / c ++调用Java函数? 参考方案 是的,可以,但是有点麻烦,并且可以以反射/非类型安全的方式工作(示例使用的C++ API比C版本更清洁)。在这种情况下,它将从C代码中创建Java VM的实例。如果首先从Java调用您的本机调用,则无需构造VM实例#include<jni.h> #include<s…
Java中的“ <<”运算符 - java最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…