Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态方法:在这种情况下使用它是否有危险?_C#_Static - Fatal编程技术网

C# 静态方法:在这种情况下使用它是否有危险?

C# 静态方法:在这种情况下使用它是否有危险?,c#,static,C#,Static,我有一个用c#编写的web应用程序。它由三个项目组成。其中两个是asp.net mvc项目,其中一个是一个简单的项目,只有我在两个mvc项目中使用的类。因此,两个mvc应用程序引用了第三个项目 我在非mvc项目中有一个静态方法,基本上可以做到这一点: 它有两个输入参数:字符串文本、MyEntities db。 MyEntities是我的数据库.edmx文件的一个实例 在方法内部,我解析文本,将其分成单独的行,得到其中的一部分。对于这一部分,根据用户的不同,我检查db.tblToy中是否有具有该名

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

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

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

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


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

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

静态方法和实例方法之间的唯一区别在于,需要对类的实例调用一个方法,而对类型本身调用另一个方法

,可能会有帮助:

静态方法本身不是线程安全的。他们没有得到治疗 CLR方法与实例方法不同


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

为什么会有危险?定义“危险”。正如在安全方面一样,攻击者可能会破坏系统中的某些东西,或者使用它来破坏MVC模式?@djechlin我编辑了这个问题。见最后一部分。@ChrisCooney我编辑了这个问题。请参阅最后一部分。
static
不是一个会导致代码出现错误的怪物。话虽如此,您基本上是在问我们您的代码是否正常工作。我不知道,我看不出来。我认为,只有当公共静态方法修改和/或依赖于该类上的静态属性时,它的危险才真正显现出来——这是一个在静态和实例之间不会真正改变的规则——但它可能更危险,这不是因为它是什么,而是因为开发人员倾向于这样做使用静态方法,这实际上归结为懒惰(不想创建新对象)。我基本上同意,但更进一步。