在我的一次采访中,有人问我static修饰符表示什么。我通过告诉面试官不能创建静态类的对象以及其他有用的点来回答。但是面试官问创建这样一个对象不能创建的类有什么用。基本上,他们问的是为什么首先需要static?我不太确定如何回答这个问题。我应该说什么? 最佳答案 面试官可能希望您讨论面向对象的设计和模式,而不是他们希望您背诵特定修饰符的定义。这里真的没有正确答案。纯粹主义者可能会争辩说static是可憎的。实用主义者可能会争辩说,它填补了“一切都是对象”抽象中的一个空白,允许您调用实用方法,而实例化一个新对象只是为了调用它们是没有意
我想像这样在我的MVCController抽象基类中构建我的log4net记录器:protectedstaticreadonlyILogLog=LogManager.GetLogger(typeof(AuthorizedController));以这种方式,我可以一次定义记录器并完成它。唯一的问题是日志输出中的记录器属性将始终是AuthorizedController,如果我有FooController继承自AuthorizedController我想日志输出以反射(reflect)这一点。执行此操作的KISS、DRY和有效方法是什么? 最佳答案
我可以从静态类和方法中调用HttpContext.Current吗?我想在每个用户的基础上存储一个值,但希望能够以静态方式访问它。例如这行得通吗?publicstaticclassStaticClass{publicstaticstringSomeThing{get{returnHttpContext.Current.Items["SomeItem"].ToString();}}} 最佳答案 是的,这是它有用的一种方式,当然,调用它的线程当前必须正在处理请求才能使其有用。 关于c#-在静
我想知道使用具有静态方法的非静态类与具有相同静态方法的静态类的一般好处(或缺点)是什么,除了我不能使用非静态类中的静态方法作为扩展方法。例如:classNonStaticClass{publicstaticstringGetData(){return"Thiswasinvokedfromanon-staticclass.";}}与此相比:staticclassStaticClass{publicstaticstringGetData(){return"Thiswasinvokedfromastaticclass.";}}使用一种方法优于另一种方法对性能/内存有何影响?注意:假设我不需要
分为两部分:如果静态类可以有静态构造函数,为什么不能有静态析构函数?最好的解决方法是什么?我有一个静态类来管理作为COM对象的连接池,如果程序中的其他地方出现问题,我需要确保关闭/释放它们的连接。 最佳答案 您应该使用具有单例模式的普通类而不是静态类(也就是说,您保留该类的一个实例,可能由该类本身的一个静态属性引用)。然后你可以有一个析构函数,或者更好的是,析构函数和Dispose的组合方法。例如,如果您现在有:staticclassMyClass{publicstaticvoidMyMethod(){...}}//Usingthe
当我尝试构建项目时,显示以下错误消息。Thecallisambiguousbetweenthefollowingmethodsorproperties:'System.Threading.Tasks.Task.Run(System.Action)'and'System.Threading.Tasks.Task.Run(System.Func)'我该如何解决这个问题?publicstaticclassMaintananceManager{privatestaticThreadSafeSocialMediaListPostList=newThreadSafeSocialMediaList(
在C#中,当我反射(reflect)派生类型时,为什么看不到基类的静态字段?我已经尝试了type.GetFields(BindingFlags.Static)和type.GetFields()。 最佳答案 这就是它的工作原理。static成员实际上是非面向对象的东西。它们不是多态的,它们确实属于它们的声明类型,并且与继承层次结构中的其他类型无关。例如,在访问派生类中的静态成员之前,不需要运行基类的静态初始化程序。除非指定了BindingFlags.FlattenHierarchy,否则不会返回基类的static成员:type.Get
我正在阅读Threadingfromwithinaclasswithstaticandnon-staticmethods我也有类似的情况。我有一个从资源中提取数据并根据数据创建一些运行时对象的静态方法。staticclassWorker{publicstaticMyObjectDoWork(stringfilename){MyObjectmo=newMyObject();//...doessomeworkreturnmo;}}该方法需要一段时间(在本例中它正在读取5-10mb文件)并返回一个对象。我想采用这种方法并在多线程情况下使用它,这样我就可以一次读取多个文件。撇开设计问题/准则不
我遇到了一个我想了解的C#行为。考虑这样一个类:publicclassSomeSingleton{publicstaticSomeSingletonDefault=newSomeSingleton();privatestaticintfield=0;privateSomeSingleton(){field=1;}publicintGetField(){returnfield;}}现在,让我们调用GetField()方法:varfield=SomeSingleton.Default.GetField();我得到0就好像跳过了实例构造函数一样。为什么? 最佳答案
确定WinForms应用程序是否有可用的Internet连接的最佳方法是什么。(当然是编程方式)如果用户未连接到Internet,我想禁用/隐藏某些功能。 最佳答案 以下将确定您是否已连接到网络,但这并不一定意味着您已连接到Internet:NetworkInterface.GetIsNetworkAvailable()这是Steve代码的C#翻译,看起来还不错:privatestaticintERROR_SUCCESS=0;publicstaticboolIsInternetConnected(){longdwConnection