c#中的自定义泛型类、泛型方法和泛型接口

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

一、泛型类:

    /// <summary>
    /// 返回前台的消息
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class YZT_Message<T>
    {
        private int m_Request_Type = 1;

        // 返回前台的成功错误类型: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 = 1;
            int b = 2;
            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();
        }
    }

 

 

原文地址:https://www.cnblogs.com/qicao/p/9126060.html

时间: 2024-10-20 01:53:38

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

C# 中自定义泛型类的示例

一.自定义泛型类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharpOOP_Lesson4 { /// <summary> /// 下拉框类 /// </summary> public class CompBox<T> { public string Item

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

1.泛型在集合中的使用 1.1 在集合中使用泛型之前的例子 ? 为什么要有泛型(Generic)? 1. 解决元素存储的安全性问题2. 解决获取数据元素时,需要类型强转的问题 ? ? 1.2 在集合中使用泛型例子1 List<String> list = new ArrayList<String>(); list.add("aaaa"); List<Integer> list2 = new ArrayList<Integer>(); li

.net基础扫盲-自定义泛型类

C#自定义泛型类用得最广泛,就是集合(Collection)中.实际上,泛型的产生其中一个原因就是为了解决原来集合类中元素的装箱和拆箱问题(如果对装箱和拆箱概念不明,请百度搜索).由于泛型的使用,使得集合内所有元素都属于同一类,这就把类型不同的隐患消灭在编译阶段--如果类型不对,则编译错误. 这里只讨论C#自定义泛型类. 基本自定义如下: public class MyGeneric < T> { private T member; public void Method (T obj) { }

自定义泛型类

1 当实例化泛型类的对象时,指明泛型类的类型.指明之后,对应的类中所有使用泛型的位置,都变为实例化中指定的泛型的类型 2 如果我们自定义了泛型类,但是在实例化时没有使用,那么默认类型是Object类的. package lianxi3; import java.util.ArrayList; import java.util.List; import org.junit.Test; //自定义泛型类 public class Order<T> { private int orderId; pr

继承中的自定义构造方法

1.继承中的自定义构造方法 不能在子类访问父类私有变量 @interface Person : NSObject @property int age; - (id)initWithAge:(int)age; @end @interface Student : Person @property NSString *name; - (id)initWithAge:(int)age andName:(NSString *)name; @end @implementation Student - (id

向集合中存储自定义对象是,自定义对象的设计

自定义对象 通过对List.Set.Map 集合的操作,发现集合的不同,自定义类的定义也有所差异 1.List集合中的自定义对象 由于List底层判断集合是否相同依赖的是equals方法,所以在自定义类时要覆盖equals方法 示例: //自定义类Person class Person{ private String name; private int age; Person(String name, int age){ this.name = name; this.age = age; } p

在JavaScript中生成自定义的对象

使用对象便于组织信息.下面我们介绍如何在JavaScript中生成自定义的对象. ---------------------- JavaScript 对象 在前面几章中我们学到JavaScript中有些内置的对象,比如String, Date, Array等等.除此之外,你还可以定义自己的对象. 对象是一种特殊的数据,含有属性和函数. 下面让我们用一个例子来说明:比如一个人是一个对象.属性是与对象有联系的值,比如人的属性包括姓名,身高,体重,年龄,肤色,眼睛的颜色等等.所有人都有这些属性,但是每

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,

SharePoint中开发自定义Timer Job

 SharePoint中开发自定义Timer Job 1. Timer Job简介 在SharePoint中有一个服务SharePoint timer service(owstimer.exe),这个服务用来进行异步处理一些SharePoint的数据,创建web application等等,为了缓解站点w3wp.exe的压力,而且Timer 服务可以说是占据了SharePoint的半边天,没有他那么SharePoint将不能正常工作 2. Timer Job 作用 很多时候我们需要定期自动去处理