创建泛型类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Collections; 6 using System.Threading; 7 using System.Runtime.InteropServices; 8 9 namespace ConsoleApplication1 10 { 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 var dm = new DocumentManage<Document>(); 16 dm.AddDocument(new Document("Title A", "Sample A")); 17 dm.AddDocument(new Document("Title B", "Sample B")); 18 19 dm.DisplayAllDocuments(); 20 if (dm.IsDocumentAvailable) 21 { 22 Document d = dm.GetDocument(); 23 Console.WriteLine(d.Content); 24 } 25 Console.ReadKey(); 26 } 27 } 28 public class DocumentManage<TDocument> where TDocument:IDocument//限定TDocument一定要继承于IDocument 29 { 30 /// <summary> 31 /// Queue:队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。 32 /// 进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 33 /// </summary> 34 private readonly Queue<TDocument> documentQueue = new Queue<TDocument>(); 35 public void AddDocument(TDocument doc) 36 { 37 //.NET LOCK方法使用:http://blog.sina.com.cn/s/blog_69f048190100xu2l.html 38 lock (this) 39 { 40 documentQueue.Enqueue(doc);//入列 41 } 42 } 43 public bool IsDocumentAvailable 44 { 45 get 46 { 47 return documentQueue.Count > 0; 48 } 49 } 50 public TDocument GetDocument() 51 { 52 TDocument doc = default(TDocument);//default:引用类型会返回 null,对于数值类型会返回零 53 lock (this) 54 { 55 doc = documentQueue.Dequeue();//出列 56 } 57 return doc; 58 } 59 public void DisplayAllDocuments() 60 { 61 foreach (TDocument doc in documentQueue) 62 { 63 Console.WriteLine(doc.Title); 64 } 65 } 66 } 67 public interface IDocument 68 { 69 string Title { get; set; } 70 string Content { get; set; } 71 } 72 public class Document : IDocument 73 { 74 public Document() 75 { } 76 public Document(string title, string content) 77 { 78 this.Title = title; 79 this.Content = content; 80 } 81 82 public string Title 83 { 84 get; 85 set; 86 } 87 88 public string Content 89 { 90 get; 91 set; 92 } 93 94 } 95 }
Android 成长之路

浙公网安备 33010602011771号