加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 2D数组属性

发布时间:2020-12-16 01:44:10 所属栏目:百科 来源:网络整理
导读:是否可以为返回数组特定元素的2D数组编写属性?我很确定我不是在寻找索引器,因为它们属于静态类. 解决方法 听起来你想要一个带参数的属性 – 这基本上就是索引器.但是,您无法在C#中编写静态索引器. 当然你可以写一个返回数组的属性 – 但我认为你不希望这样
是否可以为返回数组特定元素的2D数组编写属性?我很确定我不是在寻找索引器,因为它们属于静态类.

解决方法

听起来你想要一个带参数的属性 – 这基本上就是索引器.但是,您无法在C#中编写静态索引器.

当然你可以写一个返回数组的属性 – 但我认为你不希望这样做是出于封装的原因.

另一种方法是编写GetFoo(int x,int y)和SetFoo(int x,int y,int value)方法.

另一种替代方法是在数组周围编写一个包装类型并将其作为属性返回.包装器类型可以有一个索引器 – 可能只是一个只读者,例如:

public class Wrapper<T>
{
    private readonly T[,] array;

    public Wrapper(T[,] array)
    {
        this.array = array;
    }

    public T this[int x,int y]
    {
        return array[x,y];
    }

    public int Rows { get { return array.GetUpperBound(0); } }
    public int Columns { get { return array.GetUpperBound(1); } }
}

然后:

public static class Foo
{
    private static readonly int[,] data = ...;

    // Could also cache the Wrapper and return the same one each time.
    public static Wrapper<int> Data
    {
        get { return new Wrapper<int>(data); }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读