簡體   English   中英

如何從PolygonContainer調用公共空隙?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM