​    泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题:

一、泛型类:

    /// <summary>
/// 返回前台的消息
/// </summary>
/// <typeparam name="T"></typeparam>
public class YZT_Message<T>
{
private int m_Request_Type = ; // 返回前台的成功错误类型:1:成功(默认) 0:错误
public int Request_Type
{
get { return m_Request_Type; }
set { m_Request_Type = value; }
} private string m_Request_Message = "当前错误"; //返回前台的信息 Request_Type == 0 时,才会取当前错误数据
public string Request_Message
{
get { return m_Request_Message; }
set { m_Request_Message = value; }
} // 回返前台的信息,可能是JSON对象
public T Request_Object { get; set; } // 回返前台的信息,可能是JSON对象集合
public IList<T> Request_List { get; set; }
}

调用的时候:假如T是string类型:

YZT_Message<string> pMessage = new YZT_Message<string>();

try{

pMessage.Request_Object = "OK";

pMessage.Request_Type = 1;

}

catch (Exception err){

pMessage.Request_Type = 0;

pMessage.Request_Message = err.Message;

}

二、泛型方法:

public class Demo
{
//这是一个泛型方法,可以在普通类中
public static void Swap<T>(ref T lhs, ref T rhs)
{
T temp;
temp = lhs;
lhs = rhs;
rhs = temp;
} //调用泛型方法:
public static void TestSwap()
{
int a = ;
int b = ;
Swap<int>(ref a, ref b);//也可以省略类型参数,编译器将推断出该参数。Swap(ref a, ref b);
System.Console.WriteLine(a + " " + b);
}
}

三、泛型接口

public class Demo
{
public interface IFace<T>
{
T SayHi();
void SayHello(T msg);
}
}

实现泛型接口:

方式一:普通类实现泛型接口:

public class InterFaceDemo2 : WebApplication1.InterFaceDemo.IFace<string>
{ public string SayHi()
{
throw new NotImplementedException();
} public void SayHello(string msg)
{
throw new NotImplementedException();
}
}

方式二:泛型类,实现泛型接口,这样更灵活

public class InterFaceDemo<T>:WebApplication1.InterFaceDemo.IFace<T>
{ public T SayHi()
{
throw new NotImplementedException();
} public void SayHello(T msg)
{
throw new NotImplementedException();
}
}

 

 

c#中的自定义泛型类、泛型方法和泛型接口的更多相关文章

  1. 0072 Java中的泛型--泛型是什么--泛型类--泛型方法--擦除--桥方法

    什么是泛型,有什么用? 先运行下面的代码: public class Test { public static void main(String[] args) { Comparable c=new ...

  2. JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符

    JAVA之旅(二十一)--泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符 不知不觉JAVA之旅已经写到21篇了,不得不感叹当初自己坚持要重学一遍JAVA的信念,中途也算 ...

  3. C#中泛型方法与泛型接口 C#泛型接口 List<IAll> arssr = new List<IAll>(); interface IPerson<T> c# List<接口>小技巧 泛型接口协变逆变的几个问题

    http://blog.csdn.net/aladdinty/article/details/3486532 using System; using System.Collections.Generi ...

  4. java泛型应用实例 - 自定义泛型类,方法

    近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...

  5. JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.泛型在集合中的使用 1.1 在集合中使用泛型之前的例子 ​ 为什么要有泛型(Generic)? 1. ...

  6. UWP中实现自定义标题栏

    UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...

  7. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

  8. Android XML中引用自定义内部类view的四个why

    今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...

  9. ASP.NET Core中显示自定义错误页面-增强版

    之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...

随机推荐

  1. c# 库间关系

  2. Solr 6.7学习笔记(03)-- 样例配置文件 solrconfig.xml

    位于:${solr.home}\example\techproducts\solr\techproducts\conf\solrconfig.xml <?xml version="1. ...

  3. 洛谷P2759 奇怪的函数

    P2759 奇怪的函数 题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x ...

  4. Kali Linux 工具清单

    Kali Linux 工具清单 Information Gathering acccheck ace-voip Amap Automater bing-ip2hosts braa CaseFile C ...

  5. Docker安装nginx以及负载均衡

    首先在linux系统中新建一个data文件夹进行nginx容器的创建--即为:mkdir data. 一:第一次 1 第一步: 使用 docker pull nginx将nginx的镜像从仓库下载下来 ...

  6. JS高级学习历程-2

    1.dom操作,利用dom创建无序列表.并追加到body里边,里面要求至少有四个项目. <!DOCTYPE html> <html lang="en"> & ...

  7. puthon-进程间通信-队列和管道

    ********进程间通信-队列和管道******** ****进程间通信-队列和管道 IPC(Inter-Process Communication) ****队列 **概念介绍 创建贡献的进程队列 ...

  8. 最长回文子串--轻松理解Manacher算法

    最长回文子串这个问题的Manacher算法,看了很多博客,好不容易理解了,做一下记录. 这个算法的核心就是:将已经查询过的子字符串的最右端下标保存下来,在计算下标为i的回文字符串时,不需要从左右相邻的 ...

  9. GUI的最终选择 Tkinter(八):Message组件、Spinbox组件、PanedWindow组件、Toplevel组件

    Message组件 Message(消息)组件是Label组件的变体,用于显示多行文本消息,Message组件能够自动执行,并调整文本的尺寸使其适应给定的尺寸. from tkinter import ...

  10. oracle rollback 观察时间

    ###########issue 0: db alert 有如下提示, thread 1 cannot allocatete new log, sequenec 1111 通过检查v$log ,发现1 ...