c#中的自定义泛型类、泛型方法和泛型接口
2024-09-03 23:24:57
泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题:
一、泛型类:
/// <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();
}
}
最新文章
- Day2-python基础2
- javascript createElement ttf
- bat批量去除文件首行和合并到文件
- 在 mvc 中使用下拉列表
- ALV的报表对用户定义格式的控制(ALV I_SAVE)
- 【分享】.Net有哪些大型项目、大型网站的案例?
- spring读书笔记----Quartz Trigger JobStore出错解决
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
- 使用Java BigDecimal进行精确运算
- python:时间处理模块
- 在Ubuntu下的Apache上建立新的website,以及enable mono
- django1.7 配置demo教程(环境搭建)
- 将Model实体类对象作为WebService接口参数(转)
- SpringMVC创建HelloWorld程序
- video标签
- yum仓库管理
- 如何强制关闭LODOP或c-lodop已经弹出的预览窗口
- 使用chttpfile的一个错误
- Luogu4652 CEOI2017 One-Way Streets 树上差分
- Utils--前台调用后台接口工具类