自动实现的属性问题
Auto implemented properties issue
我不知道我做错了什么,我想通过 get 访问器访问私有整数,但我无法让它工作。 Map
class 编译正常,但我无法从 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;
您的财产是私有的。您需要指定 public 访问权限。
当您没有指定访问修饰符时,它隐藏在 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
}
请按照下一步link了解 C# 中的默认访问修饰符:
What are the Default Access Modifiers in C#?
C# 中的访问修饰符:
https://msdn.microsoft.com/en-us/library/ms173121.aspx
注意:您可以使用resharper来帮助您。但是不要像修改器工具一样使用 resharper。 "Learn what you should to about an error or warning" 来自 Resharper。 Resharper:https://www.jetbrains.com/resharper/
private 和 public 仅定义属性的可见性。如果您希望它们仅在您的 class 中设置,您绝对可以这样做:
public int xSize { get; private set;}
这将让其他 classes "see" 评估 属性 但禁止他们设置它们。另一方面,您仍然可以从 Map class.
中更改值
我不知道我做错了什么,我想通过 get 访问器访问私有整数,但我无法让它工作。 Map
class 编译正常,但我无法从 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;
您的财产是私有的。您需要指定 public 访问权限。
当您没有指定访问修饰符时,它隐藏在 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
}
请按照下一步link了解 C# 中的默认访问修饰符:
What are the Default Access Modifiers in C#?
C# 中的访问修饰符:
https://msdn.microsoft.com/en-us/library/ms173121.aspx
注意:您可以使用resharper来帮助您。但是不要像修改器工具一样使用 resharper。 "Learn what you should to about an error or warning" 来自 Resharper。 Resharper:https://www.jetbrains.com/resharper/
private 和 public 仅定义属性的可见性。如果您希望它们仅在您的 class 中设置,您绝对可以这样做:
public int xSize { get; private set;}
这将让其他 classes "see" 评估 属性 但禁止他们设置它们。另一方面,您仍然可以从 Map class.
中更改值