| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3032 人关注过本帖
标题:如何封裝更简洁
只看楼主 加入收藏
ppppooiiuu
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2016-3-2
结帖率:46.15%
收藏
已结贴  问题点数:20 回复次数:5 
如何封裝更简洁
int[] 数组 = { 7, 6, 3, 2, 1, 4, 5, 8, 0, 9 };
for (int i = 0; i < 数组.GetLength(0) - 1; i++)
{
    for (int j = i + 1; j < 数组.GetLength(0); j++)
    {
        if (数组[i] > 数组[j])//>改为<则降序
        {
            int 临时 = 数组[i];
            数组[i] = 数组[j];
            数组[j] = 临时;
        }
    }
}
我把以上封装为一个升序排序的方法以便调用,但是如果我要封装为一个降序排序的方法又得把代码复制一次,把>改为<重新封装为另一个方法,可是就为了一个大于号改为小于号我就有两个几乎相同的代码,能不能有什么办法让他更简洁呢
搜索更多相关主题的帖子: 如何 大于号 
2017-06-25 02:00
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:7 
想了两种方式
1、在实际算法时判断升序和降序
for()
{
   for()
   {
      if(升序)
      {
         if (数组[i] > 数组[j])
         {
         }
      }
      else
      {
         if (数组[i] < 数组[j])
         {
         }
      }
   }
}

2、先按升序排,若是降序再构造一个数组,将升序排好的数组反向输出
for (int i = 0; i < 数组.GetLength(0) - 1; i++)
{
    for (int j = i + 1; j < 数组.GetLength(0); j++)
    {
        if (数组[i] > 数组[j])//>改为<则降序
        {
            int 临时 = 数组[i];
            数组[i] = 数组[j];
            数组[j] = 临时;
        }
    }
}
if(降序)
{
    //创建一个新数组,将排好升序的数组从后往前赋值到新数组
}
2017-06-26 22:23
ppppooiiuu
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2016-3-2
收藏
得分:0 
回复 2楼 yhlvht
这样感觉也是写了两次,只是改变了表达方式
2017-06-27 00:08
yinniannian
Rank: 9Rank: 9Rank: 9
来 自:河北省石家庄
等 级:蜘蛛侠
威 望:2
帖 子:256
专家分:1007
注 册:2011-5-13
收藏
得分:7 
LINQ 多简单。

代做小型软件。
QQ:449795473
2017-06-27 16:40
leisiege
Rank: 4
等 级:业余侠客
威 望:8
帖 子:95
专家分:235
注 册:2015-10-22
收藏
得分:0 
把比较的方法单独出来。用的是C#的委托。白话文就是方法的变量。。。。。
linq就是这么写出来的。OrderBy ,OrderByDesc两个方法。数组可以直接用。比较器是默认的。
具体写法是:
程序代码:
  class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Math(Bigger));
            Console.WriteLine(Math(Lesser));
            Console.ReadKey();
        }
        static string Math(compare method)
        {
            if (method())
            {
                return "Bigger";
            }
            else
            {
                return "Lesser";
            }
        }
        static bool Bigger ()
        {
            return true;
        }
        static bool Lesser ()
        {
            return false;
        }

    }
    delegate bool compare();



注意。delegate的层级和class是一样的。可以看成是一个变量的类型。跟int差不多。可以这样理解。但是要自己去看他的具体实现原理。挺复杂的。
2017-06-30 21:17
zzcl558
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-1-30
收藏
得分:0 
小白进来学习学习
2020-02-02 09:00
快速回复:如何封裝更简洁
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015916 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved