0

我有用 c# 编写的网络应用程序。它由三个项目组成。其中两个是 asp.net mvc 项目,其中一个是一个简单的项目,只有我在两个 mvc 项目中使用的类。因此,这两个 mvc 应用程序引用了第三个项目。

我在非 mvc 项目中有一个静态方法,它基本上是这样做的:它有两个输入参数:字符串文本、MyEntities db。MyEntities 是我的数据库的一个实例,即 .edmx 文件。

在方法内部,我解析文本,将其分成单独的行,获取其中的一部分。对于那部分,根据用户,我检查 db.tblToy 中是否有具有该名称的记录。

每个用户都有一个不同的数据库。因此,我采用 user_id 并据此在 tblToy 表中的相应数据库中进行搜索。危险的意思是,如果该方法返回不正确的结果。例如,对于 user1,它将检查 user2 的数据库,因为它是静态的。

该方法是静态的。我不使用类实例调用它。我的问题是:这种方法是静态的有什么危险吗?

4

2 回答 2

1

不,它是静态的这一事实并不比它作为实例方法更危险。你在那个方法中投入了什么才是最重要的。

静态方法和实例方法之间的唯一区别是您需要在类的实例上调用一个,而另一个只在类型本身上调用。

来自大师的这个答案可能会有所帮助:

静态方法本质上不是线程安全的。CLR 对它们的处理与实例方法没有区别。

于 2013-03-10T15:54:29.017 回答
1

不,静态方法在这种情况下没有危险,如果它只处理来自参数的信息。当方法处理静态变量/自动实现的属性时,游戏会发生变化

于 2013-03-10T15:58:09.800 回答