C#无法访问另一个类变量

时间:2016-11-12 03:48:36

标签: c# forms class

我无法从我的某个课程中访问某些内容并在另一个课程中使用它。当我输入对象的名称时,我不知道我在谈论什么。我如何在课程之间阅读?

我的代码: 在第一堂课:

public class Form1 
{
    public struct TriangleDrawer 
    {
        // ...
        public Color Vert1Color;
        // ...
    }

    TriangleDrawer myTriangle = new TriangleDrawer();
    myTriangle.Vert1Color = Color.Red;
}

在第二节课中:

public class TriangleWindow: Form1 
{
    void WhateverVoid() 
    {
        GL.Color3(myTriangle.Vert1Color);
    }
}

Form1不包含myTriangle.Vert1Color

的定义

3 个答案:

答案 0 :(得分:0)

myTriangle设为公共/受保护的属性,默认为私有,即使使用子类也无法访问它

public class Form1
{
    public TriangleDrawer MyTriangle { get; set; }
}

然后你可以这样做

 public class TriangleWindow : Form1
    {
        void WhateverVoid()
        {
            GL.Color3(MyTriangle.Vert1Color);
        }
    }

答案 1 :(得分:0)

如果未指定访问修饰符(public,private等),则声明的成员将具有最严格的可能性。在这种情况下,myTriangle将为private,这意味着只有自己的类才能访问它。

如果希望派生类访问它,则必须将其声明为protected。当然,如果你希望全世界都能访问它,请声明它public,但要注意,这对你的代码不是一个好主意。您应该使用访问器(getset),以便您可以控制该变量的内容。基本上,如果你把它public,然后它的价值不是你想象的那么,那就更难找出原因。

您应阅读的一些链接:

Accessibility Levels

Using Properties

答案 2 :(得分:0)

您必须将'myTriangle'字段声明为public才能从另一个类访问它。如果两个类都在同一名称空间中,则将其声明为内部。