返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 2070|回复: 0

[原创] 【原创】二维数组的简易工具类-重点案例

[复制链接]
发表于 2021-1-27 17:12:43 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
本帖最后由 da11 于 2021-1-27 17:15 编辑

//主Main
        public static void Main()
        {
            //有一个需求,在二维数组中,索引的某个元素对应其他方向的索引元素会经常混淆
            int[,] ERSZ = new int[4, 4]
            {
                {1,2,3,4},
                {3,6,4,3},
                {2,3,4,0},
                {5,6,8,3}           
            };
            /*  {[0,0],[0,1],[0,2],[0,3]}
                {[1,0],[1,1],[1,2],[1,3]}
                {[2,0],[2,1],[2,2],[2,3]}
                {[3,0],[3,1],[3,2],[3,3]}
             *
             * 如[2,1]的右下方向索引是?
             *
            */

            int[] test01 = ERSZZS.GetERSZNum(ERSZ, 3, 1, FangXiang.RightUP, 10);
            Console.ReadLine();

        }

 楼主| 发表于 2021-1-27 17:13:39 | 显示全部楼层
//FangXiang.cs
    /// <summary>
    /// 定义一个方向类
    /// </summary>
    class FangXiang
    {
        private int hangIndex;

        public int HangIndex
        {
            get { return hangIndex; }
            set { this.hangIndex = value; }
        }

        public int lieIndex { get; set; }

        public FangXiang()
        {

        }

        public FangXiang(int hangIndex, int lieIndex)
        {
            this.hangIndex = hangIndex;
            this.lieIndex = lieIndex;
        }

        public static FangXiang UP
        {
            get { return new FangXiang(-1, 0); }
        }

        public static FangXiang Down
        {
            get { return new FangXiang(+1, 0); }
        }

        public static FangXiang Left
        {
            get { return new FangXiang(0, -1); }
        }

        public static FangXiang Right
        {
            get { return new FangXiang(0, +1); }
        }

        public static FangXiang LeftUP
        {
            get { return new FangXiang(-1, -1); }
        }

        public static FangXiang RightUP
        {
            get { return new FangXiang(-1, +1); }
        }

        public static FangXiang LeftDown
        {
            get { return new FangXiang(+1, -1); }
        }

        public static FangXiang RightDown
        {
            get { return new FangXiang(+1, +1); }
        }

    }

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-27 17:14:18 | 显示全部楼层
//ERSZZS.cs
    //重点案例
    /// <summary>
    /// 定义一个二维数组助手类--重点案例
    /// </summary>
    class ERSZZS
    {
        /// <summary>
        /// 定义一个获取二维数组方向参数的方法
        /// </summary>
        /// <param name="ERSZ">给出一个二维数组</param>
        /// <param name="hangIndex">二维数组行数索引</param>
        /// <param name="lieIndex">二维数组列数索引</param>
        /// <param name="fx">方向类对象</param>
        /// <param name="CountNum">指定方向数量</param>
        /// <returns>返回所有满足的元素</returns>
        public static int[] GetERSZNum(int[,] ERSZ ,int hangIndex,int lieIndex,FangXiang fxIndexDX,int CountNum)
        {
            //需要扩容的情况下,使用集合
            List<int> JGSZ= new List<int>(CountNum);
            //根据指定方向数量for循环
            for (int i = 0; i < CountNum; i++)
            {
                //行索引加等于一 FangXiang对象的行索引属性(FangXiang对象传进来前已经执行过静态方法,方法返回出来的是FangXiang对象)
                hangIndex += fxIndexDX.HangIndex;

                //列索引加等于一 FangXiang对象的列索引属性(FangXiang对象传进来前已经执行过静态方法,方法返回出来的是FangXiang对象)
                lieIndex += fxIndexDX.lieIndex;

                //判断行索引和列索引进行算数运算后是否超出二维数组的边界,全为true才执行增加元素到JGSZ集合。
                if (hangIndex < ERSZ.GetLength(0) && lieIndex < ERSZ.GetLength(1) && hangIndex >=0 && lieIndex >=0)
                {
                    JGSZ.Add(ERSZ[hangIndex, lieIndex]);
                }

            }

            //将集合转换为数组的方法
            //返回获取方向的元素。
            return JGSZ.ToArray();

        }
    }

回复 支持 反对

使用道具 举报

游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表