Tag: static

C#中静态构造函数的潜在缺陷

我的问题来自重构一个只包含静态方法的类被声明为static类,并在启动应用程序时遇到奇怪的问题。 我没有进行任何彻底的调查,但似乎从静态构造函数中进行的某些调用由于某种原因没有完成。 那么,我想知道在C#中使用静态构造函数时有哪些陷阱? 更具体地说,有什么东西应该不惜一切代价避免,而不是在静态构造函数中使用?

实用课程..好还是坏?

我一直在阅读通过在代码中使用静态类/单例来创建依赖项,是不好的forms,并产生问题,即。 紧耦合和unit testing。 我有一种情况,我有一组url解析方法没有与它们相关的状态,并只使用方法的输入参数执行操作。 我相信你熟悉这种方法。 在过去,我会继续创建一个类并添加这些方法,并直接从我的代码中调用它们,例如。 UrlParser.ParseUrl(url); 但是等一下,就是将依赖引入另一个类。 我不确定这些“实用”类是否是坏的,因为它们是无状态的,这最小化了所述静态类和单例的一些问题。 有人可以澄清一下吗? 我应该将方法移动到调用类,即只有调用类将使用该方法。 这可能违反了“单一责任原则”。

使用此静态类有哪些潜在问题

这是我的示例代码: public static class MySqlHelper { private static string constring = ConfigurationManager.ConnectionStrings[“MyConnString”].ConnectionString; public static int ExecuteNonQuery(string mysqlquery) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(mysqlquery, conn); int result; try { conn.Open(); result= cmd.ExecuteNonQuery(); } finally { conn.Close(); } return result; } } 用法: MySqlHelper.ExecuteNonQuery(“select * from customers”); 我想知道使用这个静态类的问题。 我可以改变我在这里提到的课程,但我已经在几个网站上使用这个课程,我需要几天时间在每个地方更改它并测试它。 谢谢你的任何投入。 编辑:更新了代码。 这会对所提供的答案产生影响吗? […]

aspx是否为c#静态变量提供特殊处理

在.net web应用程序中,有一些关于.aspx页面的特殊内容以及改变静态变量行为的页面后面的c#代码。 我有大量的应用程序页面是在别处开发的,并且有一个共同的模式运行通过它们我认为应该是一个实例变量被声明为一个静态变量。 更详细的问题陈述是:如果我有两个Web会话a和b在同一个应用程序池中的同一个iis服务器上运行,如果访问有问题的页面并将静态变量x设置为value1然后b访问相同的页面并将静态变量x设置为值2,我的理解是value1已被值2替换。我的困境是这个模式在代码中重复使用,在高级别代码似乎工作。 结论是它要么运气好(会话中的时间a在会话b击中它之前已经放弃了变量的需要),要么还有其他事情发生。 我愿意接受有关ac#nuance或开发人员错误的建议。

多个线程在C#中调用相同的方法

我有以下C#代码片段,我在其中模拟了我的问题。 在这个程序中,我有一个调用ReadRooms方法的Service函数。 现在我在不同的线程上调用服务方法。 我原以为ServiceCall和ReadRooms方法都会被平分,但是我得到的结果不正确。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { public static void ReadRooms(int i) { Console.WriteLine(“Reading Room::” + i); Thread.Sleep(2000); } public static void CallService(int i) { Console.WriteLine(“ServiceCall::” + i); ReadRooms(i); } static void Main(string[] args) { Thread[] ts = new Thread[4]; […]

从另一个类调用变量

如何从C#中的另一个公共类访问一个公共类中的变量? 我有: public class Variables { static string name = “”; } 我需要从以下地方调用它: public class Main { } 在此先感谢您的帮助。 我正在使用控制台应用程序。

是否可以在asp.net中使用静态LINQ to SQL DataContext维护事务?

我有ASP.NET应用程序,它使用LINQ to SQL与SQL服务器连接。 我有一个静态类,当然它可以在应用程序级别上工作。 我在这个静态类中创建了DataContext静态对象。 我没有在应用程序中创建任何数据上下文对象,除此之外。 我在哪里使用这个静态数据上下文对象进行每个数据库操作。 那么这会将事务维护为每个登录用户的线程安全吗?

使用静态方法和变量 – 好与坏

我正在开发C#和asp.net Web应用程序。 我有一个名为utilities的通用类,我在这个公共实用程序类中有很多公共和静态变量。 由于这个数字逐渐增加,我想知道将实用程序方法和变量存储为公共静态是一种好的做法。 我的代码示例 public class utilities { public static string utilVariable1 = “Myvalue”; public static string utilVariable2 = “Myvalue”; public static string utilVariable3 = “Myvalue”; : public static string utilVariableN = “Myvalue”; public static string UtilMethod1() { //do something } public static string UtilMethod2() { //do something } public static string UtilMethodN() { […]

具有静态类的竞争条件?

假设我有一个带静态方法的静态类。 多个线程可以同时调用此静态方法。 在这些情况下是否存在竞争条件: a – if the method depends only on local variables b – if the method depends on local variables and member fields

C#:如何从派生类的静态方法调用基类的静态方法?

在C#中,我有基类Product和派生类Widget。 产品包含一个静态方法MyMethod()。 我想从静态方法Widget.MyMethod()调用静态方法Product.MyMethod()。 我不能使用base关键字,因为它只适用于实例方法。 我可以显式地调用Product.MyMethod(),但是如果我稍后将Widget更改为从另一个类派生,我必须修改该方法。 C#中有一些类似于base的语法允许我从派生类的静态方法中调用基类的静态方法吗?