c#中的自定义泛型类、泛型方法和泛型接口
泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题:
一、泛型类:
/// <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#中的自定义泛型类、泛型方法和泛型接口的更多相关文章
- 0072 Java中的泛型--泛型是什么--泛型类--泛型方法--擦除--桥方法
什么是泛型,有什么用? 先运行下面的代码: public class Test { public static void main(String[] args) { Comparable c=new ...
- JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符
JAVA之旅(二十一)--泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符 不知不觉JAVA之旅已经写到21篇了,不得不感叹当初自己坚持要重学一遍JAVA的信念,中途也算 ...
- 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 ...
- java泛型应用实例 - 自定义泛型类,方法
近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...
- JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.泛型在集合中的使用 1.1 在集合中使用泛型之前的例子 为什么要有泛型(Generic)? 1. ...
- UWP中实现自定义标题栏
UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...
- Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数
10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...
- Android XML中引用自定义内部类view的四个why
今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...
- ASP.NET Core中显示自定义错误页面-增强版
之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...
随机推荐
- Lightoj1028【计算约数个数】
思路: 最终就是求一个数的约数(除了1)对吧. 然后想要枚举sqrt(N)受阻,枚举素数数组受阻,加上prime[i]*prime[i]<=n就好了?那就好了吧. #include <bi ...
- linux命令之ll按时间和大小排序显示
ll不是命令,是ls -l的别名 按大小排序 [root@localhost ~]# ll -Sh 按时间排序 [root@localhost ~]# ll -rt ll -t 是降序, ll -t ...
- AI决策算法 之 GOAP (二)
http://blog.csdn.net/lovethRain/article/details/67634803 GOAP 的主要逻辑: 1.Agent的状态机初始化Idle状态 2.Idel状态根据 ...
- ugui获取text宽
http://www.xuanyusong.com/archives/3587 void Start () { Font font = Resources.Load<Font>(" ...
- Unity 中的坐标系
说明: 注意几点: 0 行向量右乘矩阵与列向量左乘矩阵,两个矩阵互为逆矩阵 1 法线转换与mul,mul函数左乘矩阵当列矩阵计算,右乘当行矩阵计算 2 叉乘与左右手系,左手系用左手,右手系用右手,ax ...
- IT兄弟连 Java语法教程 编译Java程序
编写好Java程序的源代码后,接下来就应该编译该Java源文件来生成字节码文件了. 编译Java程序需要使用JDK中提供的javac命令,因为已经把javac命令所在的路径添加到了系统的Path环境变 ...
- Android实现点击两次返回退出APP
Android实现点击两次退出APP 这两天在做一个项目碰到这么个问题,需要主界面点击两次直接退出整个APP而不是返回上一个界面,查找了网上的资料,整合和修改了一下写了这篇博客. 这里我主要以我的项目 ...
- Arrange the Bulls
题目链接 #include <stdio.h> #include <algorithm> #include <string.h> #include <iost ...
- 题解 P1004 方格取数
传送门 动态规划Yes? 设i为路径长度,(为什么i这一维可以省掉见下)f[j][k]表示第一个点到了(j,i-j),第二个点到了(k,j-k) 则 int ji=i-j,ki=i-k; f[j][k ...
- 074 Search a 2D Matrix 搜索二维矩阵
编写一个高效的算法来搜索 m x n 矩阵中的一个目标值.该矩阵具有以下特性: 每行中的整数从左到右排序. 每行的第一个整数大于前一行的最后一个整数.例如,以下矩阵:[ [1, 3, ...