C# 自动实现的属性问题
我不知道我做错了什么,我想通过get访问器访问私有整数,但我就是无法让它工作。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;
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至少可以做到这一点。