我不知道我做错了什么,我想通过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
}
答案 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/