草庐IT

if-cases

全部标签

c# - 如何在子类的工厂方法中避免 switch-case

假设我们有一组类(卡片,为了它),我们需要根据一些标识符来实例化它们。工厂方法看起来像这样:publicCardGetCard(intcardNumber){switch(cardNumber){case13:returnnewKing();case12:returnnewQueen();case11:returnnewJack();}//...}我想要的是避免这个开关。为什么?也许我想在功能中重用这个比较。我想出的是这样的:privateDictionarycardTypes={{13,typeof(King)},{12,typeof(Queen)},{11,typeof(Jack)

C# : So if a static class is bad practice for storing global state info, 提供相同便利的好的替代方案是什么?

我一直注意到静态类在用于存储全局信息方面在SO上得到了很多不好的评价。(并且全局变量通常受到蔑视)我只想知道下面的示例有什么好的选择......我正在开发一个WPF应用程序,从我的数据库中检索到的数据的许多View都是根据当前登录用户的ID过滤的。同样,我的应用程序中的某些点应该只供被视为“管理员”的用户访问。我目前正在静态类中存储一个loggedInUserId和一个isAdminbool值。我的应用程序的各个部分都需要此信息,我想知道为什么它在这种情况下并不理想,以及替代方案是什么。启动和运行似乎非常方便。我唯一能想到的替代方法是使用IoC容器将Singleton实例注入(inje

c# - 在 aspx 页面中使用 if else 和 eval

有没有办法在aspx页面上的以下eval中使用elseif。目前我的div如下:Value=我想在我的div上使用以下逻辑:If(Percentage我试过类似的方法,但它不起作用:if(}我想知道这样的操作是否可以在aspx页面上进行。我无法在aspx.cs中执行此操作。 最佳答案 如果您绝对不想使用代码隐藏,您可以为此尝试条件运算符:假设字段Percentage包含整数。更新:VB.NET版本,以防万一,由tomasofen提供: 关于c#-在aspx页面中使用ifelse和eval

c# - 如何在#if 语句中设置.NET Core 进行编译

我创建了一个多目标框架项目。我使用这样的东西:#ifNET40Console.WriteLine("Hellofrom.NETCore4");#endif但我找不到.NETCore的通配符。我试过:#ifNETCOREAPP1.0Console.WriteLine("Hellofrom.NETCore");#endif但这不是有效的陈述。 最佳答案 你需要一个下划线,_,而不是一个点:NETCOREAPP1_0或更新的NETCOREAPP1_1和NETCOREAPP2_0的文档TargetframeworksinSDK-stylep

c# - 当 #if DEBUG 运行时

我的C#类中有这段代码。#ifDEBUGprivateconststringBASE_URL="http://www.a.com/";#elseprivateconststringBASE_URL="http://www.b.com//";#endif我想问的是什么时候#ifDEBUG代码中的路径被执行?是否执行当我在VisualStudio中运行调试session时?当我从调试文件夹手动运行有问题的exe或dll时?我忘记提及的任何其他情况? 最佳答案 #ifDEBUG这是预处理器定义。它在您定义DEBUG常量时编译。是的,它是调

c# - 这个看似未连接的 block (在 if 语句之后)是如何工作的?

我继承了一些偶尔使用以下if符号的代码:if(a)foo();{if(b)boo();moo();}我不确定如何自然地阅读它,但代码会编译并运行。有人可以解释一下这是如何工作的,以便我可以用更易读的格式重写它吗?或者,有人可以解释为什么这种表示法有用吗? 最佳答案 您发布的代码最好写成:if(a){foo();}if(b){boo();}moo();C#中的大括号有两个用途:他们为变量声明创建了一个范围。它们将语句组合在一起,以便条件和循环等可以同时应用于多个语句。无论是谁编写了您发布的代码,都选择不将它们用于第二个目的。if语句可

c# - 具有 2 个操作的单行 if 语句

我想在单行if语句中包含多个操作。默认是这样的:(if)?then:elseuserType=(user.Type==0)?"Admin":"User";但我不仅需要一个“else”,我还需要一个“elseif”像多行一样:if(user.Type==0)userType="Admin"elseif(user.Type==1)userType="User"elseif(user.Type==2)userType="Employee"单行有可能吗? 最佳答案 听起来你真的想要一个Dictionary或者可能是switch声明...不过

c# - 调试器进入条件为假的 if() block

给出这段代码:classProgram{privatestaticboolIsAdmin=true;staticvoidMain(string[]args){if(!IsAdmin){thrownewException();}try{varx=2342342;vary=123132;}catch(Exception){throw;}}}鉴于this.IsAdmin产生true-我希望调试器不会输入该if语句。实际上它确实如此-它跨过throw但实际上并没有throw!现在,只有在if语句中有异常后跟try/catchblock时才会发生这种情况,在VisualStudio2013上,针

c# - 简单的 If/Else Razor 语法

我正在尝试使用以下代码在foreach中执行一个简单的If/Else:@{varcount=0;foreach(variteminModel){if(count++%2==0){@:}else{@:}@Html.DisplayFor(modelItem=>item.Title)@Html.Truncate(item.Details,75)i.IsMain==true).Select(i=>i.Name).Single()"alt="@item.Images.Where(i=>i.IsMain==true).Select(i=>i.AltText).Single()"class="thu

ASIC-WORLD Verilog(8)if-else语句和case语句

 写在前面        在自己准备写一些简单的verilog教程之前,参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。    这是网站原文:VerilogTutorial        这是系列导航:Verilog教程系列文章导航条件语句之if-else    和C语言等程序语言类似,Verilog语法中的if-else语句可以根据条件的真假来选择执行不同分支的语句。如果每个分支需要执行的语句不止一条,则需要将这些语句都包含在begin-end语句之中。if语句    不带有分支