C#中的三元表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的三元表达式相关的知识,希望对你有一定的参考价值。
using System;
using System.Collections.Generic;
using System.Text;
namespace test01
class Program
static void Main(string[] args)
int age1 = 24;
int age2 = 32;
age1 > age2 ? 第一个大 : 第二个大;
请高手指点三元表达式的用法,最好把我前面错的代码改下发上来。多谢指教
首先,在汉字上加上分号,表示是字符串。
这个三元表达式要分成三个部分看,
第一:问号之前的age1 > age2 ,这是条件
如果条件为真,则这个表达式的结果为冒号之前的“第一个大”,
如果条件为假,则这个表达式的结果为冒号之后的“ 第二个大” 参考技术A 表达式1 ? 表达式 2 : 表达式 3
其中表达式 1、表达式2、表达式3,既可以是一个简单的表达式,又可以是由各种运算符组成的复合表达式。
计算过程很好理解:
先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式的值。 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值。
用法:
int max = age1 > age2 ? age1 : age2;
最小值可以有2种写法,都挺容易理解的
int min = age1 > age2 ? age2: age1;
int min =age1 < age2 ? age1: age2; 参考技术B 参数一 逻辑运算符 参数二 ? 条件成立 : 条件不成立
比如:
string prm1="4";
string prm2="5";
string prm3 = prm1==prm2?"yes":"no"
// 此时prm3值为"no".
age1 > age2 ? 第一个大 : 第二个大;
[第一个大]|[第二个大]应该加上引号""
否则为汉字,编译器无法认识.
string result=age1 > age2 ? "第一个大" : "第二个大"; 参考技术C age1 > age2 ? “第一个大” :“ 第二个大”;
首先,在汉字上加上分号,表示是字符串。
这个三元表达式要分成三个部分看,
第一:问号之前的age1 > age2 ,这是条件
如果条件为真,则这个表达式的结果为冒号之前的“第一个大”,
如果条件为假,则这个表达式的结果为冒号之后的“ 第二个大” 参考技术D (age1 > age2) ? "第一个大" : "第二个大";
右侧的三元/空合并运算符和赋值表达式?
【中文标题】右侧的三元/空合并运算符和赋值表达式?【英文标题】:Ternary/null coalescing operator and assignment expression on the right-hand side? 【发布时间】:2012-01-13 05:30:56 【问题描述】:在 C# 中尝试使用三元和空值合并运算符时,我发现可以在表达式的右侧使用赋值,例如这是一个有效的 C# 代码:
int? a = null;
int? b = null;
int? c = a ?? (b = 12);
int? d = a == 12 ? a : (b = 15);
奇怪的是,不仅表达式右侧的赋值被评估为它自己的右侧(这意味着这里的第三行被评估为12
,而不是像b = 12 => void
这样的东西) ,但这种赋值也有效,因此在一个语句中分配了两个变量。也可以使用此赋值右侧的任何可计算表达式,以及任何可用的变量。
这种行为在我看来很奇怪。我记得在 C++ 中使用 if (a = 2)
而不是 if (a == 2)
比较时遇到了麻烦,它总是被评估为 true
,这是从 Basic/Haskell 切换到 C++ 后的常见错误。
它是一个文档化的功能吗?有什么名字吗?
【问题讨论】:
注意括号... if(2 == (a =2 )) .... 【参考方案1】:这是assignment operator 也返回值的结果:
赋值运算符 (=) 将其右侧操作数的值存储在由其左侧操作数表示的存储位置、属性或索引器中,并将该值作为结果返回。
表达式b = 12
不仅将12赋给b
,还返回了这个值。
【讨论】:
【参考方案2】:在 C# 中可以进行多重赋值:
int a;
int b;
int c;
a = b = c = 5;
//all variables = 5;
if(6 == (c = 6))
//this will be true;
如果你把一个变量放在方程的右边,即使它刚刚在同一行被赋值,它也会返回它的值/引用。
【讨论】:
以上是关于C#中的三元表达式的主要内容,如果未能解决你的问题,请参考以下文章