泛型<T>,是你肿莫了,还是我错了...
委托自定义数组排序 项目一共三个文件如下。
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>,是你肿莫了,还是我错了...的更多相关文章
- 【wikioi】1230 元素查找(巨水题+set/hash)
http://wikioi.com/problem/1230/ 这题我真的不好意思写题解了...set练手.. #include <cstdio> #include <set> ...
- MariaDB 表的基本操作(3)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...
- BZOJ 3514 Codechef MARCH14 GERALD07加强版 Link-Cut-Tree+划分树
题目大意: 给定n个点m条边的无向图.求问当图中仅仅有[编号在[l,r]区间内]的边存在时图中的联通块个数 强制在线 注意联通块是指联通了就是同一块,不是Tarjan求的那种块 看到这题的那一刻我就想 ...
- (四)Lua脚本语言入门
这篇文章就当成铺垫型的文章,写着写着发现有好多想写的,,关于C#与Java,当然作为铺垫肯定与Lua的下部分介绍有关..... 对于"泛型",先看C#中"泛型" ...
- (四)Lua脚本语言入门(数组遍历)
这篇文章就当成铺垫型的文章,写着写着发现有好多想写的,,关于C#与Java,当然作为铺垫肯定与Lua的下部分介绍有关..... 对于"泛型",先看C#中"泛型" ...
- C# 递归构造树状数据结构(泛型),如何构造?如何查询?
十年河东,十年河西,莫欺少年穷. 学无止境,精益求精 难得有清闲的一上午,索性写篇博客. 首先,我们需要准备一张表,如下范例: create table TreeTable ( TreeId ) no ...
- C# 泛型使用笔记
泛型的基本概念我就不在这重复了,不了解的同学请自行百度. 我主要写下我在项目中要到的泛型实例.献丑了.....有什么不好或不对的地方大家尽可评论留言. 为什么要用泛型? 通过使用泛型,我们可以极大地提 ...
- Java高质量代码之 — 泛型与反射
在Java5后推出了泛型,使我们在编译期间操作集合或类时更加的安全,更方便代码的阅读,而让身为编译性语言的Java提供动态性的反射技术,更是在框架开发中大行其道,从而让Java活起来,下面看一下在使用 ...
- 高阶函数---swift中的泛型介绍(一步步实现Map函数)
说明 本文内容均出自函数式 Swift一书, 此处整理仅仅是为了自己日后方便查看, 需要深入研究的话, 可以点进去购买, 支持原作者 本书由 王巍–新浪微博大神翻译 OneV's Den 喵神博客 接 ...
随机推荐
- Java实现 LeetCode 384 打乱数组
384. 打乱数组 打乱一个没有重复元素的数组. 示例: // 以数字集合 1, 2 和 3 初始化数组. int[] nums = {1,2,3}; Solution solution = new ...
- Java实现 蓝桥杯VIP 算法提高 乘法运算
算法提高 乘法运算 时间限制:1.0s 内存限制:512.0MB 问题描述 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入格式 输入只有一行,是两个用空格 ...
- Java实现简易计算器
import java.util.Scanner; public class Demo_1 { public static void main(String[] args) { //输入的两个数字进行 ...
- 关于uniapp获取当前距离屏幕顶部的距离
onPageScroll(e){ console.log(e); }
- 数据结构与算法-python描述-单链表
# coding:utf-8 # 单链表的相关操作: # is_empty() 链表是否为空 # length() 链表长度 # travel() 遍历整个链表 # add(item) 链表头部添加元 ...
- Android getMeasuredHeight()与getHeight()的区别
getMeasuredHeight()返回的是原始测量高度,与屏幕无关 getHeight()返回的是在屏幕上显示的高度 实际上在当屏幕可以包裹内容的时候,他们的值是相等的,只有当view超出屏幕后, ...
- Apollo移植
Apollo移植 环境 平台 ubuntu16.04 Apollo_kernel 1.0 安装步骤步骤 步骤一:安装ubuntu(官方建议使用Ubuntu 14.04.3) 步骤一和步骤二参考文档路径 ...
- CSS布局之display: tables布局
首先来看看display: table的兼容性: 可以看到,除非你还要跟IE6/7较劲,否则display: table不需考虑兼容性. 接下来看看关于table的display可选值: table: ...
- (四)Maven项目工程目录约定
使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下: src/main/java 存放项目的.java文件 src/main/resources 存放项目资源文件 ...
- Android学习笔记点击事件和触摸事件的区别
当我们点击手机屏幕的时候Android系统不仅会触发单击事件,还会触发触摸事件.在Android中它会先触发触摸事件,如果这个触摸事件没有被消费掉再去触发单击事件 代码示例: MainActivty. ...