可以在不使用实例化的情况下由其他类访问属性类吗?

时间:2012-02-18 23:30:42

标签: c# winforms properties

在我正在研究的WinForms应用程序中,我希望有一个属性类来存储项目中所有表单都可以访问的公共变量,以便根据需要存储和检索值。

过去我使用静态类来存储字符串和int值等,但这些在编码期间是固定的,在应用程序运行时不能更改。如果可能的话,我想以相同的方式使用属性类,这样我就可以读取写入功能。

我必须在Form1.cs中创建属性类的实例,然后将其作为参数传递给其他表单的构造函数,以便它们访问属性类中的字段吗?

或者这可以在没有实例化的情况下完成吗?

3 个答案:

答案 0 :(得分:4)

如果我理解正确 - 你不需要做任何不同的事情。 可以在运行时更改这些内容。

你可以:

static class ForAll
{
    public static int i;
}

并使用它:

ForAll.i = 1;

答案 1 :(得分:1)

简单回答,是的,你必须立即发送课程 如果不立即使用类,则不能使用非静态属性或方法。

无论如何appconfig听起来像是一个更好的数据库。

答案 2 :(得分:0)

我建议使用单例模式,而不是将类传递给每个表单。

using System;

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}

这可确保您拥有相同的类实例,然后您可以与其他表单共享该类。如果你将类传递给其他形式,它可能会变得非常混乱。

http://msdn.microsoft.com/en-us/library/ff650316.aspx