C#使用多维数组作为属性

时间:2013-10-01 22:39:43

标签: c#

using System;

namespace CardV5
{
    class Tee
    {
        private static int numOne = 4;
        private static int numTwo = 2;
        private static int numThree = 22;
        public int Value { get; set; }
        private int[, ,] m_tData = new int[numOne, numTwo, numThree];
        public int TeeData(int IndexOne, int IndexTwo, int IndexThree) 
        { 
            get{return m_tData[IndexOne, IndexTwo, IndexThree];}
            set{m_tData[IndexOne, IndexTwo, IndexThree] = Value;}
        }
    }
}

获取并设置为红线。 错误标志:

  

只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句。

如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

你在那里有一个常规方法:public int TeeData(int IndexOne, int IndexTwo, int IndexThree)getset表示法用于属性,而不是方法。

我认为您想要的是一个索引属性 - 只需将parens更改为方括号,然后您将使用this而不是名称:

public int this[int IndexOne, int IndexTwo, int IndexThree]
{ 
    get{return m_tData[IndexOne, IndexTwo, IndexThree];}
    set{m_tData[IndexOne, IndexTwo, IndexThree] = Value;}
}

这样你就可以:

Tee tee = new Tee();
tee[0,0,0] = /*something*/;

答案 1 :(得分:1)

获取并设置应用于属性。在您的情况下,您已经定义了一个方法。 Get \ Set在此上下文中无效

答案 2 :(得分:0)

您可以创建单独的get / set属性:

    public int GetTeeData(int IndexOne, int IndexTwo, int IndexThree) 
    { 
        return m_tData[IndexOne, IndexTwo, IndexThree];
    }
    public void GetTeeData(int IndexOne, int IndexTwo, int IndexThree, int value) 
    { 
        m_tData[IndexOne, IndexTwo, IndexThree] = value;
    }

或使其成为索引器:

    public int this[int IndexOne, int IndexTwo, int IndexThree] 
    { 
        get{return m_tData[IndexOne, IndexTwo, IndexThree];}
        set{m_tData[IndexOne, IndexTwo, IndexThree] = Value;}
    }