[英]How can I call a public void from my PolygonContainer?
我總是在以下行中收到此錯誤消息:
Casttoenum(this.Polygontype);
無法通過嵌套類型“ WindowsPhoneGame2.Containerclass.PolygonContainer”訪問外部類型“ WindowsPhoneGame2.Containerclass”的非靜態成員
怎么了? 如何從PolygonContainer調用公共無效的Casttoenum?
解決此問題的最佳方法是什么?
public List<PolygonContainer> PolygonList = new List<PolygonContainer>();
public struct PolygonContainer
{
public float PolygonpositionX;
public float PolygonpositionY;
public float Polygonrotation;
public int Polygontype;
public PolygonContainer(float polygonpositionx, float polygonpositiony, float polygonrotation, int polygontype)
: this()
{
this.PolygonpositionX = polygonpositionx;
this.PolygonpositionY = polygonpositiony;
this.Polygonrotation = polygonrotation;
this.Polygontype = polygontype;
Casttoenum(this.Polygontype);
}
}
public enum Polygontypes
{
PolyState1 = 1,
PolyState2 = 2,
PolyState3 = 3
}
private Polygontypes currentPolygontype;
public void Casttoenum(int state)
{
currentPolygontype = (Polygontypes)state;
WhichPolygon(currentPolygontype);
}
public List<Vertices> Polyglist = new List<Vertices>();
public void WhichPolygon(Polygontypes polyliststate)
{
switch (polyliststate)
{
case Polygontypes.PolyState1:
Polyglist = list1;
break;
case Polygontypes.PolyState2:
Polyglist = list2;
break;
case Polygontypes.PolyState3:
Polyglist = list3;
break;
}
}
在方法聲明中,而不是直接采用int直接采用Polygontypes(enum),因此可以避免進行強制轉換。
如下更改PolygonContainer():
public PolygonContainer(float polygonpositionx, float polygonpositiony, float polygonrotation, Polygontypes polygontype)
然后刪除以下用於強制枚舉的語句:
this.Polygontype = polygontype;
Casttoenum(this.Polygontype);
在調用PolygonContainer()函數時,必須將枚舉值作為int插入的最后一個參數傳遞,以便不能傳遞無效值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.