如何使用另一个类的值

时间:2018-07-31 10:02:39

标签: c#

我想在存储要在其他类中使用的常量值的地方拥有一个类或其他更好的类。

例如,我想要一个名为A的类,它看起来像

public class A
{
  public int x = 1;
}

在另一个类中,我想在方法中使用该值:

class B
{
  public void test()
  {
    int y = A.x;
  }
}

我知道这是错误的,这只是我要使用的示例。这可能是一个基本问题,但我在编程方面没有太多经验。

3 个答案:

答案 0 :(得分:1)

您必须在类A中创建类B的实例才能访问其属性(在您的情况下,它是字段x)。

internal class A {
    public int X { get; set; } = 1;
}
internal class B {
    private A myInstanceOfA = new A();
    public void test() {
        int y = myInstanceOfA.X;
    }
}

但是,您可以访问类A的静态成员和常量成员,而无需创建本地实例:

internal class A {
    public const int X = 1;
}
internal class B {
    public void test() {
        int y = A.X;
    }
}

我强烈建议您阅读以下文章:

这些人应该为您提供有关类及其中包含的成员的全面介绍。

答案 1 :(得分:1)

将所有内容都声明为公开是不好的做法。访问修饰符设置方法,类或变量的可访问性。同时,有四个面向对象编程的支柱。 抽象继承多态封装。您应该学习它们,以便更好地和更好地理解编程,此处提供了链接。 OOP

希望这一定会对您有所帮助。

在提出问题的同时,如果您确实需要访问A类的行为或方法,可以将其设置为静态并在另一个类中进行访问。

public class A{

    public static int x = 1; 
    public static void print(){
        //some code here
    }
}

public class B{

    public void test(){
        int a = A.x;
        A.print();
    }
}

或者另一种方法是将x设为私有并对其进行getter和setter。在类B中初始化A的实例,并通过其实例对其进行访问。

A obj = new A();
int a = obj.getX();

答案 2 :(得分:0)

您可能需要一个conststatic变量,您可以在其中定义一个值并访问它而无需初始化类。

以您的示例为例,

public class A {
    public const Int32 ConstantVariable = 0;

    // or

    public static Int32 StaticVariable = 0;
}

public class B {
    public void test() {
        Int32 y = A.ConstantVariable;

        // or

        Int32 y = A.StaticVariable;
    }
}

请注意,const变量需要当场初始化,并且不能更改值,而static变量可以在运行时分配,并可以随时更改。