c# - 请向 vb-er 解释 C# 语法

标签 c# vb.net syntax ternary-operator

我有以下代码片段:

        // Notify the source (the other control).
        if (operation != DropOperation.Reorder) {
            e = new DroppedEventArgs()
            {
                Operation = operation == DropOperation.MoveToHere ? DropOperation.MoveFromHere : DropOperation.CopyFromHere,
                Source = src,
                Target = this,
                DroppedItems = srcItems
            };
            src.OnDropped(e);
        }

我不明白
操作 = 操作 == DropOperation.MoveToHere ? DropOperation.MoveFromHere :DropOperation.CopyFromHere 行。

谁能解释一下?为了记录...... dropOperation 是一个枚举。 你能给我 vb 语法等价物吗?

赛斯

最佳答案

之所以难以理解是因为您不熟悉三元运算符?:。基本上它所做的是评估一个表达式,并根据评估返回的是 true 还是 false 返回两个值之一。

例如,如果 bool 值为真,则以下表达式将返回“真”,否则返回“假”:

bool test = false;
string testString = test ? "true" : "false";

它实际上也存在于 VB.NET 中 - 虽然表达方式略有不同。这两个分别在C#和VB.NET中的语句其实是一样的

Dim s As String = If(True, "kek", "lol")
string s = true ? "kek" : "lol";

IIf 和三元运算符之间的区别在于,IIf 将始终计算第二个和第三个参数,因为 IIf 是函数而不是运算符。出于这个原因,三元运算符更受欢迎。

注意:三元运算符是在 VB 9 中添加的,因此如果您使用的是以前的版本,则必须依赖 IIF 函数才能实现此功能。

关于c# - 请向 vb-er 解释 C# 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1412979/

相关文章:

c# - 我的代码已被 Norton 检测到病毒(Sonar)

php - 如何在 vb.net 中合并字符串日期和时间并转换为带有军事格式的日期和时间?

syntax - Linden脚本语言怪异语法错误

html - 链接外部文件时属性的排列顺序是否正确?

syntax - angerlySetInnerHTML 的非 jsx 等价物是什么?

c# - 遍历列表

c# - 全为 0x00 的字节数组等于 0x08?

c# - 带有声明变量的简单 C# 方向

asp.net - 如何从字符串中获取日期

VB.net Hour(Now()) 不工作