C# 自动实现的属性问题

C# 自动实现的属性问题,c#,get,accessor,C#,Get,Accessor,我不知道我做错了什么,我想通过get访问器访问私有整数,但我就是无法让它工作。Map类编译得很好,但是我无法从MapViewer中的一个实例访问get方法 我也试着在官方文档中读到它,代码应该是好的,但它不是 谢谢 public class Map { int xSize {get;} = 0; int ySize {get;} = 0; public Map(int xSize, int ySize){ this.xSize = xSize;

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

我也试着在官方文档中读到它,代码应该是好的,但它不是

谢谢

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
    }

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

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

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

public int xSize {get;} = 0;
public int ySize {get;} = 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#中的默认访问修饰符:

C#中的访问修饰符:


注意:您可以使用resharper来帮助您。但不要像使用修改工具一样使用resharper。从Resharper“了解有关错误或警告的信息”。Resharper:

当您没有指定访问修饰符时,它隐藏在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#中的默认访问修饰符:

C#中的访问修饰符:


注意:您可以使用resharper来帮助您。但不要像使用修改工具一样使用resharper。从Resharper“了解有关错误或警告的信息”。Resharper:

私有和公共仅定义属性的可见性。如果您希望仅在您的类中设置它们,那么您完全可以这样做:

public int xSize { get; private set;}

这将允许其他类“查看”和评估属性,但禁止它们设置属性。另一方面,您仍然可以在Map类中更改值。

private和public仅定义属性的可见性。如果您希望仅在您的类中设置它们,那么您完全可以这样做:

public int xSize { get; private set;}

这将允许其他类“查看”和评估属性,但禁止它们设置属性。另一方面,您仍然可以在Map类中更改值。

我知道它们在默认情况下是私有的,所以我认为更多的是我如何理解getter和setter的问题。据我所知,我将使用getter和setter来防止直接修改属性。在我的情况下,我希望xSize和ySize变量只被“getted”而不是“setted”,因此我认为将它们保留为私有只允许我通过get编辑它们的值。如果变量是公开的,即使没有get和set,我也可以访问它们。我在“获取”和“设置”方面犯了什么错误?谢谢我知道它们在默认情况下是私有的,所以我认为这更多的是我如何理解getter和setter的问题。据我所知,我将使用getter和setter来防止直接修改属性。在我的情况下,我希望xSize和ySize变量只被“getted”而不是“setted”,因此我认为将它们保留为私有只允许我通过get编辑它们的值。如果变量是公开的,即使没有get和set,我也可以访问它们。我在“获取”和“设置”方面犯了什么错误?谢谢这就是我要找的,谢谢!对于私有集,当我尝试从另一个类赋值时,我的IDE在编译之前不会给出任何警告。奇怪的是,大多数IDE都应该在试图从另一个类设置属性时加下划线,因为这将导致编译错误。Visual Studio中的Intellisense至少可以。这就是我要找的,谢谢!对于私有集,当我尝试从另一个类赋值时,我的IDE在编译之前不会给出任何警告。奇怪的是,大多数IDE都应该在试图从另一个类设置属性时加下划线,因为这将导致编译错误。VisualStudio中的Intellisense至少可以做到这一点。