zoukankan      html  css  js  c++  java
  • C# 自定义泛型类,并添加约束

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace GenericExam
    {
        class Program
        {
            static void Main(string[] args)
            {
                var dm = new DocumentManager<Document>();
                dm.AddDocument(new Document("Title A","Content A"));
                dm.AddDocument(new Document("Title B","Content B"));
                dm.DisplayAllDocument();


                if (dm.IsDocumentAvailable)
                {
                    Document d = dm.GetDocument();
                    Console.WriteLine(d.Title);
                }
                Console.Read();


            }
        }

    }



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace GenericExam
    {
        public interface IDocument
        {
            string Title { get; set; }
            string Content { get; set; }
        }


        public class Document:IDocument
        {
            public string Title { get; set; }
            public string Content { get; set; }


            public Document(string title, string content)
            {
                this.Title = title;
                this.Content = content;
            }
        }


        public class DocumentManager<T> where T : IDocument
        {
            public Queue<T> DocumentQueue = new Queue<T>();


            public void AddDocument(T doc)
            {
                lock(this)
                {
                    DocumentQueue.Enqueue(doc);
                }
            }


            public bool IsDocumentAvailable
            {
                get { return DocumentQueue.Count > 0; }
            }


            public T GetDocument()
            {
                T doc = default(T);
                lock (this)            
                {               
                    doc = DocumentQueue.Dequeue();
                }
                return doc;
            }


            public void DisplayAllDocument()
            {
                foreach (T doc in DocumentQueue)
                {
                    Console.WriteLine(((IDocument)doc).Title);
                }
            }
        }
    }

  • 相关阅读:
    【HNOI 2002】 营业额统计
    【BZOJ 3224】 普通平衡树
    【NOIP2014】 联合权值
    【NOIP2016】 组合数问题
    BZOJ2212 POI2011Tree Rotations(线段树合并)
    LOJ114 k大(xiao)异或和(线性基)
    LOJ121 动态图连通性(LCT)
    BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)
    BZOJ3237 AHOI2013连通图(线段树分治+并查集)
    BZOJ2208 JSOI2010连通数(floyd+bitset)
  • 原文地址:https://www.cnblogs.com/dxmfans/p/9434796.html
Copyright © 2011-2022 走看看