自动实施的属性问题

时间:2016-03-25 21:58:16

标签: c# get accessor

我不知道我做错了什么,我想通过get访问器访问私有整数,但我无法让它工作。 Map类编译得很好但我无法从get中的某个实例访问MapViewer方法。

我也尝试在官方文档中阅读它,代码应该没问题,但它不是

谢谢!

public class Map {

    int xSize {get;} = 0;
    int ySize {get;} = 0;

    public Map(int xSize, int ySize){
        this.xSize = xSize;
        this.ySize = ySize;
    }

}


public class MapViewer : MonoBehaviour {

    int xSize = 20;
    int ySize = 20;

    Map map;
    Texture2D image;

    void Start () {
        map = new Map (xSize, ySize);
        image = new Texture2D(map.???, map.???); //The issue is here
    }

4 个答案:

答案 0 :(得分:2)

默认情况下,这些属性为private,您需要将其声明为public

public int xSize {get;} = 0;
public int ySize {get;} = 0;

答案 1 :(得分:1)

private和public仅定义属性的可见性。如果你想让它们只在你的班级中设置,你肯定可以这样做:

public int xSize { get; private set;}

这将让其他课程"见"并评估财产,但禁止他们设置。另一方面,您仍然可以在Map类中更改值。

答案 2 :(得分:0)

您的属性是私有的。您需要指定公共访问权限。

答案 3 :(得分:0)

如果未指定访问修饰符,则它隐藏在IDE中,默认值为“private”。

所以实际上你的代码是这样的;

public class Map {

    private int xSize {get;} = 0;
    private int ySize {get;} = 0;

    public Map(int xSize, int ySize){
        this.xSize = xSize;
        this.ySize = ySize;
    }

}


public class MapViewer : MonoBehaviour {

    private int xSize = 20;
    private int ySize = 20;

    private Map map;
    private Texture2D image;

    void Start () {
        map = new Map (xSize, ySize);
        image = new Texture2D(map.???, map.???); //The issue is here
    }

改变它;

public class Map {

    public int xSize {get;} = 0;
    public int ySize {get;} = 0;

    public Map(int xSize, int ySize){
        this.xSize = xSize;
        this.ySize = ySize;
    }

}

public class MapViewer : MonoBehaviour {

    private int xSize = 20;
    private int ySize = 20;

    private Map map;
    private Texture2D image;

    void Start () {
        map = new Map (xSize, ySize);
        image = new Texture2D(map.???, map.???); //The issue is here
    }

请按照下一个链接了解C#中的默认访问修饰符:
What are the Default Access Modifiers in C#?

C#中的访问修饰符:
https://msdn.microsoft.com/en-us/library/ms173121.aspx

注意:您可以使用resharper来帮助您。但是不要使用resharper,就像它是一个修饰工具。从Resharper“了解你应该对错误或警告做什么”。 Resharper:https://www.jetbrains.com/resharper/