C#,从类中访问变量?

时间:2011-02-02 14:19:18

标签: c#

说我有

        public int MyVariable;
在Form1.cs文件中

,我想从Class1.cs访问它,您认为最好的方法是什么?

谢谢!

5 个答案:

答案 0 :(得分:3)

MSDN: Properties

具有属性的基类:

class Person
{
    private string name;  // the name field
    public string Name    // the Name property
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}

Auto Implemented Properties(如果不需要对“名称”进行高级工作):

class Person
{
    public string Name { get; set; } // the Name property with hidden backing field
}

访问该属性的类:

Person person = new Person();
person.Name = "Joe";  // the set accessor is invoked here                

System.Console.Write(person.Name);  // the get accessor is invoked here

答案 1 :(得分:1)

这取决于场景。但理想情况下,Form元素会传递给任何需要使用它们的函数。

答案 2 :(得分:1)

您有几个选择:

  1. 将值传递给正在使用它的类/方法。这是首选方案。如果您的类依赖于此值,请将值提供给类。不要让课程去寻找它。 (参见:依赖性倒置原则)
  2. 将值设为静态。然后任何其他类都可以引用该值。当然,请注意实例和静态之间的区别。值总是相同的,需要在成员的定义中给出,而不是在构造函数或其他逻辑中给出。
  3. 在类中创建表单实例(本身只是一个类)并访问该实例上的公共成员。这不太可能是您想要的,因为您创建的实例不是“在页面上”运行的实例。 (它也违反了上述原则。)
  4. 将对表单(this)的引用传递给该类,并引用该引用中的成员。
  5. 另一方面,您需要养成使用公共成员属性而不是变量的习惯。在大多数情况下,该属性可能只是获取/设置变量而已。但是,如果需要添加更多内容,可以在不破坏兼容性的情况下完成。将变量更改为属性会更改类的占用空间并破坏使用该类的内容。

答案 3 :(得分:0)

制作变量static。然后你可以像Form1.MyVariable一样调用它。

答案 4 :(得分:0)

试试这样:

如果是(1),您可以将MyClass.MyInt私有只读。

public class MyForm : System.Windows.Forms.Form
{
    int myInt;

    public MyForm()
    {
        myInt = 1;

        //1
        var myClass = new MyClass(myInt);

        //2
        myClass.MyInt = myInt;
    }
}

public class MyClass
{
    public int MyInt { get; set; }

    public MyClass(int myInt)
    {
        MyInt = myInt;
    }
}