多个IF/CASE语句的替代方案
有没有办法避免使用C#中的/案例语句? 在我的应用程序中,我最终将使用8个以上的字段来创建一个linq查询,其中每个表达式都可以为null或!= null,因此它将给我64个方案. 我没有提供任何代码示例,因为我可以使用if/case做到这一点,并尽可能地简化它. 如果您熟悉该问题的某些有用方法,我将感谢任何建议. 代码示例(它仅包括两个代表,但我必须添加更多的滤波器数据) 存储库 public virtual IEnumerable Get(Expression> filter = null, Expression> filter1 = null) { IQueryable query = dbSet; if (filter != null) {
4 2024-04-26
编程技术问答社区
我想知道如何缩短这段代码中重复使用if语句的时间
我重复一系列IF statements 3次,我想知道如何解决.我尝试制作一种更新价格的方法,但它并没有让我称呼它.有没有办法只写一系列价格,如果粘贴一次,则在尺寸内将其称为statements? 我是C#的新手,因此任何帮助都将不胜感激. Console.WriteLine("What size pizza would you like?\nSmall, Medium, or Large? (S, M, L)"); string size = Console.ReadLine(); if(size == "S" || size =="s") { decimal price = 5.00M; Console.WriteLine("How many toppings would you like?\n0, 1, or 2?"); int to
8 2024-04-26
编程技术问答社区
C# 有没有更好的方法在通用类型上使用Switch-Case / If-Else?
我目前正在尝试对通用类型进行一些铸造. 因此,基本想法是拥有一种接受通用类型的方法,并根据传递的类型进行不同的操作. 出于简单原因,我只会展示float,bool和default 的使用 设置看起来像这样(其中T是类本身定义的通用类型): protected T DoStuff(T value) { switch (value) { case float floatValue: float result = DoFloatStuff(floatValue); switch (result) { case T output: return output; } case bool boolValue: bool result = DoBoolStuff(boolValue); switch (result
12 2024-04-25
编程技术问答社区
写出列表中的特定行
我有一个大文件,然后将该文件分为2组:A和B.下面是文件中每行的一个示例: 5/21/2015 11:55:56 PM | Batch 6|386/767|50.33 %|CH2M-R|Processed NXRMN5...Checking refundable and non-refundable fares. Traditional Booking. Inside ticketing window. Minimum Savings Required: $131.00. Actual Savings: $257.18. Savings found: $257.18 (11.55 %). Savings were previously found. 简而言之,我正在编写一个将研究两组A和B的程序,如果一行有"储蓄",它将写出该行.另外,如果该文件节省30%或更高,它将写出该行并将1个星号放在前面,如果其节省30%或更高,$ 500或更高,它将写出2个星号.为了澄清,257.1
10 2024-04-25
编程技术问答社区
在c#中用字符串格式检查是否符合条件
我不确定天气是否可能,但我必须以某种方式在项目中进行. 我的字符串格式有一个条件: string condition = "(param1='69' OR param1='66' OR param1='21' OR param1='93') AND (param2='FL' OR param2='WA) AND (param3!='31' AND param3!='19')"; 我从DB中获得的条件,并且我的代码中有param1,param2和param3的值.现在,我必须在if语句天气中检查此条件的false,并相应地显示结果. 我尝试喜欢更换param1,param2,param3用实际值替换为69,ca,22.因此字符串看起来像: condition = "(69='69' OR 69='66' OR 69='21' OR 69='93') AND (CA='FL' OR CA='WA) AND (22!='31' AND 22!='19')"; 并尝试将
8 2024-04-25
编程技术问答社区
如何在c#中检查json数组是否为空?
我正在调用Google Maps并使用System.json来解析对象.我使用: 抓住我的对象 double placeLat = json["results"][0]["geometry"]["location"]["lat"]; 然后,我想检查Whoter存在第三个对象,如果是,则执行一些操作,但显然以下失败.我知道在这种情况下,Google Maps返回2个对象,我想检查第三个对象,以避免在NULL上执行操作并将其进一步传递..当Google Maps返回3个对象时,以下情况正常,因此我相信我的病情是错误的. if (json["results"][2] != null) { } 我得到此错误: 索引超出范围.必须是非负的,小于 收藏.参数名称:索引 关于如何在使用system.json的情况下正确构建if语句的任何想法? 解决方案 如果结果数组中只有两个条目,则您无法访问json["results"][2],因为索引2在数组
2 2024-04-25
编程技术问答社区
在if块内返回,还是写if/else块,性能上有区别吗?
我正在完成我的项目来重构一些代码,并意识到我写了这样的东西: if(errorCode > 0) { DisplayError(errorCode); return; } // Continue to do stuff otherwise. 您可能已经猜到了,该功能具有返回类型的void.当我开始看这件事时,我思考将其放入IF/else Block中是否存在任何真正的区别: if(errorCode > 0) { DisplayError(errorCode); } else { // Do other stuff } 其他块将一直持续到功能结束为止,因此控制流量基本相同.这里是否存在性能差异,或应使用的约定,或者这两个确实完全相同? 解决方案 在两种情况下生成的代码都是完全相同的. (您在第一个示例中缺少围绕代码的括号,但是我只是假设这是一个错别字,实际上您是在使用return和else>.) . 如果您查看这两种方法的生
8 2024-04-25
编程技术问答社区
注册表类。如果键存在
IM使用 Microsoft.win32.Registry 类.我试图做一个如果Regkey存在,但不知道 如何 我想要这样的东西: RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\test"); if(key.keyExist("yourKey")) Console.WriteLine("yourKey exist!"); 据我所知, 解决方案 子键存储在系统中的路径中. 因此,您可以执行此类操作以查看子钥匙是否存在: using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\test")) { if (key != null) { Console.WriteLine("yourKey exist!"); } else
10 2024-04-24
编程技术问答社区
如果语句不能改变本地变量
为什么我不能用if语句更改值? int amount; string inputbalk = inputbar.Text; if (inputbalk== string.Empty) { amount = Convert.ToInt32(inputbalk); amount = 1; } if (inputbalk != string.Empty) { amount = Convert.ToInt32(inputbalk); amount = 1; } int onepercent = amount/= 100; 它将"量"视为一个未分配的变量,即使我将其设置为1,通过两个不同的命令. 如果我调试,我会明白: "错误1使用未分配的
4 2024-04-24
编程技术问答社区
"不是所有的代码路径都会返回一个值 "的错误发生在一个方法中,但我确实使用了一些if语句来覆盖所有情况
这可能是一个愚蠢的问题,但我只想给别人提供更好的解释. 我的方法定义为以下: private int Test(int i) { if (i 0) return 1; //return 0; } 它给我这个错误"不是所有代码路径返回值". 我以为我有3 if statement,可以涵盖所有场景(i 0).因此,它不应该向我展示这个错误. 解决方案 编译器并不那么聪明.另外,您的代码效率略有效率,因为它可以确定地测试(i必须大于最后情况). 将其写为: private int Test(int i) { if (i
8 2024-04-24
编程技术问答社区
对复选框使用 "if "语句的替代方法
我尝试替换每个" if" for" for"或" while": if (CheckObject1.Checked) XRPC.SetMemory(8184, value); if (CheckObject2.Checked) XRPC.SetMemory(7848, value); [...] if (CheckObject20.Checked) XRPC.SetMemory(1800, value); 我已经尝试过,但是问题是我不知道如何在复选框结束时增加数字: int current = 8184; int X = 1; while (current > 1800) { if (CheckObjectX.Checked) // regex? XRPC.SetMemory(current, value); X += 1; current -= 336; } 我不知道是否可以将正则表达式用于"复选框"
10 2024-04-23
编程技术问答社区
有什么方法可以终止MVC Razor @: 行吗?
考虑此示例: 问题是} />是剃须刀作为输出字符串的一部分所构想的. 我尝试使用括号,但没有运气. 是否有一种方法可以终止同一行中的@:运算符,否则我必须将其拆分为其他行/使用三元运算符? 更新 如果一个值为true,我的请求的一个非常常见的用例可以添加类: 因此,如果不存在三元操作员的:,它将其视为一元if操作员,但这只是一个愿望... 在这里我在C#Uservoice上的建议. 解决方案 对于单个属性,您可以使用@value语法,也有特殊情况的复选框(请参阅剃须刀快速参考): 您还可以使用语法,该语法提供了显式(而不是"直到行的结
6 2024-04-23
编程技术问答社区
如果VB.NET的条件(IIf)不等于C#的条件(?)
IIf(condition As Boolean, TruePart As Object, FalsePart As Object) As Object c#条件操作员(?:) : condition ? first_expression : second_expression; 当我将某些代码从C#转换为vb.net时,我知道转换代码无法正常工作,因为在vb.net中,如果在检查条件之前对条件和错误零件进行了评估! > 例如,C#: public int Divide(int number, int divisor) { var result = (divisor == 0) ? AlertDivideByZeroException() : number / divisor; return result; } vb.net: Public Function Di
2 2024-04-23
编程技术问答社区
在C#代码背后检查WebAPI是否可用的简单、最佳方法
检查WebAPI是否可用的最佳方法是什么?我想在简单的if()语句中检查它,甚至有可能保持相对简单吗?如果有更好的检查方法.就像尝试/捕获一样.就告诉我嘛.谢谢 我想在我的代码Page_Load方法中包括if-statement.因此,当API不可用时,我可以阻止该站点. 我尝试了: try { WebClient client = new WebClient(); client.UseDefaultCredentials = true; string response = client.DownloadString(baseuri + Constants.API_LEHRLING + lehrlingID); } catch (Exception ex) { string url = "AccessDenied.aspx"; Server.Transfer(url, tr
2 2024-04-22
编程技术问答社区
如何在if语句之外使用一个已经在if语句中声明的变量?
嘿,我只是在学校里学习C#,并且在弄清楚我如何在if语句之外使用该变量在if语句中声明时如何在if语句之外使用变量. ....我必须在if sectemant之外使用"因子"变量,因为它是我需要进行学校作业的等式的一部分.如果我缺少任何东西或您需要更多信息,请不要犹豫告诉我 public caloriesCalculator() { InitializeComponent(); } private void calculate_Click(object sender, EventArgs e) { double kilos; double pounds; int factor; double totalcalories; pounds = double.Parse(lbsT
12 2024-04-22
编程技术问答社区
如何通过速记的 "if-else "结果来打破一个循环?
假设我在循环中有一个速记if-else语句,如以下情况: for(...) { a = b == c ? b : c; // More unnecessary code if the result was true. } 我想根据条件的结果打破循环: for(...) { a = b == c ? b break : c; // Now the unnecessary code is not executed. } 我意识到我可以像在此示例中完全以完全的方式键入: for(...) { if( b == c ) { a = b; break; } else { a = c; } // Now the unnecessary code is not executed. } 但是太长了,我试图在一行中以每条破裂状态使每个破裂条件
14 2024-04-22
编程技术问答社区
在C#中使用一个else与多个if语句
有没有办法快速检查C#? 中的以下逻辑 if (a) { } if (b) { } if (c) { } else //none of the above, execute if all above conditions are false { /* do something only if !a && !b && !c */ } 这不同于使用if-else在a,b和c中都可以一次正确,所以我不能以这种方式堆叠它们. 我想在a,b和c的情况下运行其他块,而无需写if (!a && !b && !c).这是因为当条件变得更加复杂时,代码可能会变得很混乱.它需要重写大量代码. 这是可能的吗? 解决方案 首先, no ,else阻止仅尊重if条款 ,因此您需要替代. 此选项不是特别"干净",但我会: bool noneAreTrue = true; if(a) { noneAreTrue = false; } if(b) {
12 2024-04-22
编程技术问答社区
C# If not (this) Or (this) or (this)-多条件IF/OR
我有这样的条件: if (!(InRange1 || InRange2 || InRange3)) { //Do Something } 每个inrange变量都是布尔值. 所需的行为是,如果这些值中的任何人是错误的,我想做某件事,但这不是那样工作.在事件触发之前,所有值必须是错误的. 是否需要写为 if (!InRange1 || !InRange2 || !InRange3) { //do something } ,无论哪种情况,我都很好奇为什么原始语句不起作用. 解决方案 您可以使用 Demorgan的法律为此. 您所拥有的等同于Nor. !(A | B | C)与demorgan定律相当于!A & !B & !C. 您想要的是nand,所以!(A && B && C).这完全等于您要寻找的东西 - !A | !B | !C. 其他解决方案 您的第二个假设是正确的. 看看 boolean algebra 和您可以写它n
2 2024-04-21
编程技术问答社区