gpt4 book ai didi

c# - C#封装内部类并访问外部

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:30 25 4
gpt4 key购买 nike

我有这些类,一个是模型,另一个是 Listener,第三个是 Util 类。我想通过第一个中的变量映射访问 Terrains,但不想公开访问内部类 Terrain。有什么办法吗?

It prints error CS0052: Inconsistent accessibility: field type System.Collections.Generic.List is less accessible than field `MapaMundiInfoScript.map'

public class MapaMundiInfoScript : MonoBehaviour {

public static bool changeInMap= false;
public static List<Terrain>map = new List<Terrain>();


void Start(){
Terrain terrain = new Terrain(0,0);
Terrain.TerrainPart initialPart = new Terrain.TerrainPart(20,20,0,0);
terrain.terrainParts.Add (initialPart);
map.Add(terrain);
changeInMap=true;
}
class Terrain{
int XPosition;
int ZPosition;
public List <TerrainPart> terrainParts = new List<TerrainPart> ();

public Terrain(int XPosition, int ZPosition){
this.XPosition=XPosition; this.ZPosition=ZPosition;
}

public class TerrainPart
{
int XSize;
int ZSize;
int XPosition;
int ZPosition;

TerrainPartReturn ReturnTerrainPart(int num1,int num2,int num3,int num4)
{
return new TerrainPart (num1,num2,num3,num4);
}

public TerrainPart(int XSize,int ZSize,int XPosition,int ZPosition){
this.XSize = XSize;
this.ZSize = ZSize;
this.XPosition=XPosition;
this.ZPosition =ZPosition;
}
}
}


public class MapListener : MonoBehaviour {

void Update () {

if (MapaMundiInfoScript.changeInMap) {
foreach(MapaMundiInfoScript.Terrain terrain in MapaMundiInfoScript.mapMundi)
{
foreach(terrain.terrainPart terrainPart in terrain.terrainParts)
{
RegionDraw.Draw(terrainPart);
}
}
MapaMundiInfoScript.changeInMap = false;
}
}


public class RegionDraw
{
/***
Implementantion Draw Method
***/
}

最佳答案

您不能将私有(private)类作为公共(public)属性引用。您需要将类设为 public 以供公众访问。考虑将您的属性和方法设为privateprivate protectedinternal 等。

如果您需要提供只读属性,您可以使用公共(public) getter 和私有(private) setter 等。如果您需要阻止某些方法的执行,请考虑将它们设置为私有(private)等。该类可以是公共(public)的,同时仍然锁定类内部的属性和方法。考虑您实际需要公开的内容。

关于c# - C#封装内部类并访问外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53937836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com