Tag: 条件运算符

使用true和false作为条件运算中的表达式

我正在维护一些代码,并且发现了以下模式: var isMale = (row[“Gender”].ToString() == “M”) ? true : false; 而不是这个: var isMale = (row[“Gender”].ToString() == “M”); 是否有人会这样做? 有人认为前者更具可读性或更清晰吗? 是否有某种旧的C“陷阱”,这是一个保留吗?

在genericsList的ForEach()中使用lambda表达式中的条件运算符?

是不是允许在ForEach中的lambda表达式中有一个条件运算符? List items = new List{“Item 1”, “Item 2”, “Item I Care About”}; string whatICareAbout = “”; // doesn’t compile 🙁 items.ForEach(item => item.Contains(“I Care About”) ? whatICareAbout += item + “,” : whatICareAbout += “”); 编译错误 – >“只能将赋值,调用,递增,递减和新对象表达式用作语句” 尝试使用正常if也不起作用: // 🙁 items.ForEach(item => if (item.Contains(“I Care About”)) {whatICareAbout += item + “, “;} 只是不可能?

完整的if / else语句与条件运算符

可能重复: 使用条件?:(三元)运算符的好处 条件运算符是否缓慢? 大家好, 关于if / else语句的不同,我有一个非常简单的问题。 除了编写更少的代码之外,使用条件运算符而不是完整的if / else语句还有其他好处吗? 是否有性能提升,编译代码减少,或者在使用时有什么好处? 感谢您的帮助 马尔科

为什么在使用条件运算符时需要显式的ToString()?

我有以下代码来组成一个简单的SOAP Post表单数据值: var postParameters = new Dictionary { { “someNumber”, “100” }, { “someString”, “Hello World” } }; var resultWhenNotInConditional = postParameters .Keys .Zip(postParameters.Values, (key, value) => string.Format(“{0}={1}”, key, value)) .Aggregate(null, (prev, next) => (prev != null) ? string.Format(“{0}&{1}”, prev, next) : next); 它按设计工作,即 resultWhenNotInConditional = “someNumber=100&someString=Hello World” 但是,当我将它包装在条件运算符中进行空检查时,如下所示: var resultWhenInConditional = (postParameters != null) […]

C#条件运算符错误只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句

嗨,我正在编写一个基本程序来查找输入数字是否为素数。 我有一个checkPrime(num)函数检查素数,如果num是prime则返回true ,else返回false 。 现在在我的main()函数中,我使用条件运算符来缩短代码但是我收到一个我不确定的错误。 以下是我的代码: static void Main(String[] args) { int n = Int32.Parse(Console.ReadLine()); while (n– > 0) { int num = Int32.Parse(Console.ReadLine()); (checkPrime(num) == true) ? Console.WriteLine(“Prime”) : Console.WriteLine(“Not Prime”); } } 当我编译时,我得到错误,因为Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement在条件语句行的while循环中Only assignment, call, increment, decrement, await, […]

C#条件运算符不是语句?

我有一个简单的小代码片段令我感到沮丧: HashSet groupUIDs = new HashSet(); groupUIDs.Add(uid)? unique++ : dupes++; 在编译时,它会生成错误: 只有赋值,调用,递增,递减和新对象表达式才能用作语句 HashSet.Add返回bool,因此三元(?)运算符应该工作,这看起来像是一种完全合法的方式来跟踪我添加到哈希集的唯一和重复项的数量。 当我将其重新格式化为if-then-else时,它可以正常工作。 任何人都可以解释错误,如果有一种方法可以做一个简单的三元运算符?

短路声明评估 – 这有保证吗?

这里有关于C#中的短路语句的快速问题。 使用if语句: if (MyObject.MyArray.Count == 0 || MyObject.MyArray[0].SomeValue == 0) { //…. } 是否保证评估将在“MyArray.Count”部分后停止,前提是该部分为真? 否则我会在第二部分得到一个nullexception。

条件运算符是否缓慢?

我正在查看一些带有巨大switch语句的代码和每个case上的if-else语句,并立即感受到优化的冲动。 作为一个优秀的开发人员,我总是应该着手获得一些硬性时间事实,并从三个变体开始: 原始代码如下所示: public static bool SwitchIfElse(Key inKey, out char key, bool shift) { switch (inKey) { case Key.A: if (shift) { key = ‘A’; } else { key = ‘a’; } return true; case Key.B: if (shift) { key = ‘B’; } else { key = ‘b’; } return true; case Key.C: if (shift) […]

为什么条件运算符没有正确地允许使用“null”来赋值为可空类型?

可能重复: 可空类型和三元运算符。 为什么这不起作用? 具有可空类型的条件运算符赋值? 这将无法编译,说明“无法确定条件表达式的类型,因为’System.DateTime’和””之间没有隐式转换 task.ActualEndDate = TextBoxActualEndDate.Text != “” ? DateTime.Parse(TextBoxActualEndDate.Text) : null; 这很好用 if (TextBoxActualEndDate.Text != “”) task.ActualEndDate = DateTime.Parse(TextBoxActualEndDate.Text); else task.ActualEndDate = null;

在C#中使用条件运算符键入结果

我试图使用条件运算符,但我对它认为结果应该是的类型挂了。 下面是一个我设法表明我遇到的问题的例子: class Program { public static void OutputDateTime(DateTime? datetime) { Console.WriteLine(datetime); } public static bool IsDateTimeHappy(DateTime datetime) { if (DateTime.Compare(datetime, DateTime.Parse(“1/1”)) == 0) return true; return false; } static void Main(string[] args) { DateTime myDateTime = DateTime.Now; OutputDateTime(IsDateTimeHappy(myDateTime) ? null : myDateTime); Console.ReadLine(); ^ } | } | // This line has the compile […]