草庐IT

c# - 避免 If Else 条件

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭8年前。Improvethisquestion我想重构以下代码以避免if...else,这样我就不必在每次有新的调查类型进来时都更改方法(开放/封闭原则)。以下是我正在考虑重构的一段代码:if(surveyType==SurveySubType.Anonymous){DoSomething(param1,param2,param3);}elseif(surveyType==SurveySubType.Invitational){DoSo

c# - 如何将 ListItemCollection (dropdownlist.items) 转换为字典<string,string>?

如何转换ListItemCollection(DropDownList.items)到Dictionary(我知道它可以通过每个循环来完成)还有其他方法linq吗? 最佳答案 您可以使用LINQ:collection.Cast().ToDictionary(i=>i.Value,i=>i.Text);无法立即知道项目的类型,因此无法立即知道cast方法(至少intellisense没有为我提出来)。但是ToDictionary()应该可以让您到达那里,并指定您想要的任何内容作为键和值。HTH.

c# - 我什么时候应该写静态方法?

所以我明白了什么是静态方法或字段,我只是想知道什么时候使用它们。也就是说,在编写代码时,什么设计适合使用静态方法和字段。一种常见的模式是将静态方法用作静态工厂,但这可以通过重载构造函数来轻松完成。正确的?例如:varbmp=System.Drawing.Bitmap.LoadFromFile("Image01.jpg");至于静态字段,创建单一对象是否是它们的最佳用途? 最佳答案 静态方法通常适用于不需要来自类实例(来自this)的任何数据的操作,并且可以仅使用它们的参数来执行它们的预期目的。一个简单的例子是Point::dista

c# - 如何在 C# 中创建子类?

如何使用VisualStudio2010在C#中为ASP.NET创建子类? 最佳答案 你是这个意思吗?publicclassFoo{}publicclassBar:Foo{}在这种情况下,Bar是子类。 关于c#-如何在C#中创建子类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4245816/

c# - 我怎样才能改进这个设计?

让我们假设我们的系统可以执行操作,并且一个操作需要一些参数来完成它的工作。我为所有操作定义了以下基类(为了您的阅读乐趣而进行了简化):publicabstractclassBaseBusinessAction:whereTActionParameters:IActionParameters{protectedBaseBusinessAction(TActionParametersactionParameters){if(actionParameters==null)thrownewArgumentNullException("actionParameters");this.Parame

c# - 让类将自身作为参数传递给泛型基类是邪恶的吗?

我第一次看到一位同事在实现对象池时这样做。他将要被池化的类作为参数传递给通用基类。这个基类列出了池化代码。奇怪的是基类会知道它的子类。在每个正常情况下,这都被认为是不好的做法。但在这种情况下,parent只是一种避免编写重复代码的技术解决方案。基类永远不会被任何其他代码引用。这种构造的一个缺点是它“烧掉了基类”。您不能在层次结构的中间引入通用基类。这个问题可能超出了主题。下面是一个可以想象的例子:publicabstractclassSingletonwhereT:class{publicstaticTInstance{get;privateset;}publicSingleton()

c# - 为什么非静态类中有所有静态方法/变量?

我遇到过一个非静态类,但所有方法和变量都是静态的。例如:publicclassClass1{privatestaticstringString1="one";privatestaticstringString2="two";publicstaticvoidPrintStrings(stringstr1,stringstr2){...所有变量在所有实例中都是静态的,因此没有必要拥有类的单独实例。是否有理由创建这样的类? 最佳答案 类是在.NET1.x时代写的吗?静态类直到C#2.0才出现。

c# - 成员变量和成员属性之间的区别?

在某些情况下,我在类的顶部声明了成员变量,然后还声明了一个属性来访问或设置该成员变量,但我问自己,如果只访问该变量,那么该属性是否是必需的,并且从类内部而不是其他地方设置,那么使用属性访问和设置成员变量而不是直接对成员变量本身进行设置的优点是什么。这是一个例子:publicclassCar{intspeed;//IsthissufficientenoughifCarwillonlysetandgetit.publicCar(intinitialSpeed){speed=initialSpeed;}//Isthisactuallynecessary,isitonlyforsettinga

c# - 覆盖和隐藏之间的确切区别

谁能从内存和引用的角度说出覆盖和隐藏的工作原理。classA{publicvirtualvoidTest1(){//Impl1}publicvirtualvoidTest2(){//Impl2}}classB:A{publicoverridevoidTest1(){//Impl3}publicnewvoidTest2(){Impl4}}staticMain(){Aaa=newB()//ThiswillgivememorytoBaa.Test1();//Whathappensintermsofmemorywhenthisexecutesaa.Test2();//-------------

c# - C# 和 VB 中的 Overridable 和 Override

在C#中,override默认启用,那么,是否不需要显式在基类中将方法声明为可覆盖?如果是的话Overridable仅限于VB.NET还是在C#中也是必需的?因此可以覆盖哪些类型的方法?它只是抽象类的抽象方法还是任何方法? 最佳答案 VB中的Overridable关键字对应C#中的virtual关键字。您必须使方法成为虚拟方法才能覆盖它。抽象方法自动是虚拟的。 关于c#-C#和VB中的Overridable和Override,我们在StackOverflow上找到一个类似的问题: