如果你只能挑一个,那么重新运行就是对的。但有一个共同存在的理由,最好理解它,以便您可以适当地使用它。
比方说,你有一个函数返回数据库中的所有记录,那么放入共享类就可以。假设这个函数有一个参数让你指定一个你想返回的记录。在这种情况下,您仍然安全,因为每次调用该函数都会将另一个框架添加到堆栈并分别跟踪该框架的变量。
但是,如果您开始在函数中使用类成员变量,那么这就是您可能遇到麻烦的地方。假设您的类使用包含每页要显示的行数的成员变量。每次用户更改其偏好时,都会影响所有用户。
所以,我希望能为你解决一下。
编辑:休息你的问题......
考虑MessageBox类。正如你所知道的,你不需要创建它的一个实例来使用它的方法。如果对它的Show(string text)方法同时进行两个调用,则不必担心第二次调用会覆盖第一次传递的消息,因为每次调用该方法都会维护自己的一组变量。
然而,考虑下面的类:
public static class MyMessageBox
{
public static string Message { get; set; }
public static void Show()
{
MessageBox.Show(MyMessageBox.Message);
}
}
通知有关此类的几件事情: 1)显示具有通过对静态类MyMessageBox参考访问Message属性。它不能引用它作为'this.Message',因为没有实际的类实例,因此没有'this'这样的事情。
2)因为这是一个静态类,所有属性/字段必须声明为静态。但是,请不要误解您也可以使用静态变量和方法来创建非静态类。在功能上,使你的类成为静态并不会改变你的代码行为的方式,这只会导致编译器在你的类中执行某些规则。
制作静态方法允许您将其称为MyClass.SomeMethod()而不是instanceOfMyClass.SomeMethod()。这只是语法上的差异。实际上,所有的方法都是静态的(即没有方法代码的多个实例......它只在一个地方,它是实例化的变量)。除了语法上的差异之外,使静态方法还实施了一些规则,以防止引用任何非静态属性/字段,因为您没有从对象的实际实例调用它。
3)最重要的是,请注意,这将是一个可怕的方式来设计这个类。如果对课程进行两次调用,可能有一个人可能会将Message属性设置为“Hello”,然后其他人可能会在第一个人显示其消息之前将其设置为“World”。然后每个人调用Show()方法,你会得到两个说“世界”的消息框。
有时候需要这种设计,所以你必须使用多线程技术来使后续的调用者排队等待使用特定的资源。但对于这样简单的事情来说,这显然是荒谬的。
请给出一些代码示例。你使用VB.NET的事实让一些读者感到困惑。 –