C# 我可以访问其他用户使用的相同静态方法吗?
我在C#上有一个静态方法: 现在,如果用户A调用MyClass.myOwnMethod(),用户B是否可以调用用户A调用的相同方法(是静态的),或者当用户B调用该方法时,它是否可以创建类/方法的另一个“实例” 因为使用静态方法可能会很危险,所以 例子C# 我可以访问其他用户使用的相同静态方法吗?,c#,asp.net,methods,static,C#,Asp.net,Methods,Static,我在C#上有一个静态方法: 现在,如果用户A调用MyClass.myOwnMethod(),用户B是否可以调用用户A调用的相同方法(是静态的),或者当用户B调用该方法时,它是否可以创建类/方法的另一个“实例” 因为使用静态方法可能会很危险,所以 例子 userA调用MyClass.myown方法(10) 如果同时userA userB的Console.Write调用MyClass.myOwnMethod(20),那么每个用户的结果是什么 用户A得到20和用户B 30,或者两者都得到30 如果
- userA调用MyClass.myown方法(10)李>
- 如果同时userA userB的Console.Write调用MyClass.myOwnMethod(20),那么每个用户的结果是什么
是一个局部变量internalValue
在设计上是线程安全的李>Console.Write()
但在“真实”情况下,您可能会尝试使用共享(静态)数据,然后需要某种形式的锁定 是的,这是可能的。您应该避免以这种方式使用静态方法。我自己在登录类中犯了这个错误,我的同事接管了我的用户配置文件
只要确保dataobjects/类不是静态的,就可以使类成为静态的静态方法处理类型而不是实例。因此,是的,任何用户都可以调用静态myOwnMethod()。您没有提到如何访问这些方法,但是静态方法不会重复,因此两个用户将调用完全相同的代码。这取决于开发人员如何防止由此产生的竞争条件
请阅读MSDN以了解我的意思。我保证这篇文章绝对值得一读。我不知道你说的用户A和用户B是什么意思 在多线程方面:一次可以由多个线程调用静态方法。我想这就是你所说的 调用静态方法时不涉及类实例
您必须以线程安全的方式在方法中编写代码:同步对全局或静态数据的访问非常重要。对于您的问题:是的,任何人都可以同时调用静态方法 对于您的示例:在您当前的情况下,userA和userB将得到结果作为其方面
但如果方法的参数是对象类型,我不能这么说。可能它不是线程安全的这完全取决于用户A和用户B的类的范围。如果用户A和用户B在进程中使用静态方法,则是的,它们共享该方法。但是,如果他们在不同的进程中使用共享类,则不会共享静态方法 Winforms?网络表单?用户是否使用相同的程序实例?如何限制用户?我根本不知道如何阻止用户调用您的代码。请解释在这个上下文中“用户”是什么。添加的示例或我的意思!也许更清楚:)@Oded:我从一个aspx.cs(web应用程序)调用这些方法,添加了我的意思!看看,我不明白最后一步。当然,如果我通过静态对象,他们将编辑相同的对象。。。但如果我传递新对象(或者我将新对象实例传递到方法中),它们将无法访问同一对象。(作为int internalValue的例子)…是的,但是如果在方法中我使用非静态对象,userB不应该与userA交互,对吗?这就是我需要的。。。!取决于你如何与非静态的东西互动。有很多可能性。
public class MyClass
{
public MyClass()
{
}
public static void myOwnMethod(int myValue)
{
int internalValue;
internalValue=myValue+10;
Console.Write(internalValue);
}
}