委托自定义数组排序 项目一共三个文件如下。

CSort.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 委托自定义数组排序
{
class CSort<T>
{
public CSort()
{ }
/// <summary>
///
/// </summary>
/// <param name="arrObj"></param>
internal void Show(T[] arrObj)
{
foreach (T item in arrObj)
{
Console.Write(item.ToString() + " ");
}
}
/// <summary>
///
/// </summary>
/// <param name="arrObj"></param>
/// <param name="comp"></param>
internal void Sort(T[] arrObj, Comp<T> comp)
{
for (int i = ; i < arrObj.Length; i++)
{///arrObj.Length-i-1:至数组的最后一个元素
for (int j = ; j < arrObj.Length - i - ; j++)
{
if (comp(arrObj[j], arrObj[j + ]) > )
{
T obj = arrObj[j];
arrObj[j] = arrObj[j + ];
arrObj[j + ] = obj;
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name="one"></param>
/// <param name="two"></param>
/// <returns></returns>
public int CompObj(T one, T two)
{
if (typeof(int) is T)
{
return int.Parse(one.ToString()) - int.Parse(two.ToString());
}
if (typeof(string) is T)
{
return (one.ToString()).Length - (two.ToString()).Length;
}
//if (typeof(Person) is T)
// return ((Person)one).Age - ((Person)two).Age;
return ;
}
//public int CompObj(string one, string two)
//{
// return one.Length - two.Length;
//} //public int CompObj(int one, int two)
//{
// return one - two;
//} }
//class Person
//{
// /// <summary>
// /// 年龄
// /// </summary>
// private int age;
// /// <summary>
// /// 年龄
// /// </summary>
// public int Age
// {
// get { return age; }
// set { age = value; }
// }
// /// <summary>
// /// 名字
// /// </summary>
// private string name;
// /// <summary>
// /// 名字
// /// </summary>
// public string Name
// {
// get { return name; }
// set { name = value; }
// }
// /// <summary>
// /// 性别
// /// </summary>
// private string sex;
// /// <summary>
// /// 性别
// /// </summary>
// public string Sex
// {
// get { return sex; }
// set { sex = value; }
// }
//}
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 委托自定义数组排序
{
class Program
{
static void Main(string[] args)
{
int[] arrInt = new int[] { , , , , , , , , };
string[] arrString = new string[] { "ab", "abc", "a", "abcd", "abc", "abcdef", "abcde" };
//Person[] arrPerson ={new Person(){Age=18,Name="ab",Sex=null},
// new Person(){Age=17,Name="a",Sex=null}}; CSort<string> s = new CSort<string>();
CSort<int> i = new CSort<int>();
//CSort<Person> p = new CSort<Person>();
s.Sort(arrString, s.CompObj);
i.Sort(arrInt, i.CompObj);
i.Show(arrInt);
//p.Sort(arrPerson, p.CompObj);
Console.WriteLine();
s.Show(arrString);
//Type type2= arrInt.GetType();
//do
//{
// type2 = type2.BaseType;
////Console.WriteLine(type2.ToString()); //} while (type2 != null);
////Console.WriteLine(arrInt.GetType().BaseType.BaseType.BaseType.ToString());
Console.ReadKey();
} }
}

CSortDelegate.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 委托自定义数组排序
{
public delegate int Comp<T>(T one, T two);
}

运行没有错误!!!可是却也没有结果!!!

监视 T 却出现:

T “T”是一个“类型形参”,这在给定的上下文中无效

这是为什么???

泛型<T>,是你肿莫了,还是我错了...的更多相关文章

  1. 【wikioi】1230 元素查找(巨水题+set/hash)

    http://wikioi.com/problem/1230/ 这题我真的不好意思写题解了...set练手.. #include <cstdio> #include <set> ...

  2. MariaDB 表的基本操作(3)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  3. BZOJ 3514 Codechef MARCH14 GERALD07加强版 Link-Cut-Tree+划分树

    题目大意: 给定n个点m条边的无向图.求问当图中仅仅有[编号在[l,r]区间内]的边存在时图中的联通块个数 强制在线 注意联通块是指联通了就是同一块,不是Tarjan求的那种块 看到这题的那一刻我就想 ...

  4. (四)Lua脚本语言入门

    这篇文章就当成铺垫型的文章,写着写着发现有好多想写的,,关于C#与Java,当然作为铺垫肯定与Lua的下部分介绍有关..... 对于"泛型",先看C#中"泛型" ...

  5. (四)Lua脚本语言入门(数组遍历)

    这篇文章就当成铺垫型的文章,写着写着发现有好多想写的,,关于C#与Java,当然作为铺垫肯定与Lua的下部分介绍有关..... 对于"泛型",先看C#中"泛型" ...

  6. C# 递归构造树状数据结构(泛型),如何构造?如何查询?

    十年河东,十年河西,莫欺少年穷. 学无止境,精益求精 难得有清闲的一上午,索性写篇博客. 首先,我们需要准备一张表,如下范例: create table TreeTable ( TreeId ) no ...

  7. C# 泛型使用笔记

    泛型的基本概念我就不在这重复了,不了解的同学请自行百度. 我主要写下我在项目中要到的泛型实例.献丑了.....有什么不好或不对的地方大家尽可评论留言. 为什么要用泛型? 通过使用泛型,我们可以极大地提 ...

  8. Java高质量代码之 — 泛型与反射

    在Java5后推出了泛型,使我们在编译期间操作集合或类时更加的安全,更方便代码的阅读,而让身为编译性语言的Java提供动态性的反射技术,更是在框架开发中大行其道,从而让Java活起来,下面看一下在使用 ...

  9. 高阶函数---swift中的泛型介绍(一步步实现Map函数)

    说明 本文内容均出自函数式 Swift一书, 此处整理仅仅是为了自己日后方便查看, 需要深入研究的话, 可以点进去购买, 支持原作者 本书由 王巍–新浪微博大神翻译 OneV's Den 喵神博客 接 ...

随机推荐

  1. Java实现 洛谷 P1487 陶陶摘苹果(升级版)

    题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力 ...

  2. 天哪!手动编写mybatis雏形竟然这么简单

    前言 mybaits 在ORM 框架中,可算是半壁江山了,由于它是轻量级,半自动加载,灵活性和易拓展性.深受广大公司的喜爱,所以我们程序开发也离不开mybatis .但是我们有对mabtis 源码进行 ...

  3. 96题--不同的二叉搜索树(java、中等难度)

    题目描述:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例如下: 分析:本题可用动态规划的方法求解. 设 dp[n] 表示以 1 ... n 为节点组成的二叉搜索树的种类 ...

  4. Vue —— VueX精讲(1)

    大纲 这一讲我们最主要的就是学习vue中的数据管理VueX,这个是一个大杀器 一.回顾一些Promise相关的东西 Promise 有几个比较重要的方法,最重要的还是有一个叫做all的方法,这个也是非 ...

  5. HashMap(二)之面试题系列

    定义类考题 什么是Hash?什么是HashMap? HashMap 的工作原理是什么 HashMap HashTable的区别 为什么要用HashMap 源码类考题 什么是hash碰撞,怎么减少碰撞, ...

  6. 听说你的资源被盗用了,那你知道 Nginx 怎么防盗链吗?

    上一篇文章讲了 Nginx 中的变量和运行原理,下面就来说一个主要提供变量并修改变量的值的模块,也就是我们要讲的防盗链模块:referer 模块. 简单有效的防盗链手段 场景 如果做过个人站点的同学, ...

  7. Python变量和注释

    1.变量与变量的作用: (1)什么是变量:变量源于数学,是计算机语言中能存储计算结果或能表示值抽象概念.变量可以通过变量名访问.在指令式语言中,变量通常是可变的:在Python中变量名必须是大小写英文 ...

  8. (六)POI-操作Excel的poi的字体设置

    原文链接:https://blog.csdn.net/class157/article/details/92817286 package com.java.poi; import org.apache ...

  9. 【01JMeter基础】测试计划

    测试计划 整个脚本的集合根目录,所有线程组集合的承载,可以添加线程组.测试片段.非测试元件.配置元件.监听器.定时器.前置/后置处理起器.断言等 一.用户自定义变量 可以使用在所有的线程组中,通过${ ...

  10. 【JMeter_03】JMeter GUI操作界面介绍

    JMeter主界面主要分为 标题栏.菜单栏.工具栏.测试计划树形目录.内容展示区 标题栏:主要展示JMeter的程序版本.当前脚本的名称.脚本的储存路径 菜单栏:程序基本上所有功能的所属分类目录,基本 ...