C#基础---Queue(队列)的应用

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: |||超大  

Queue队列,特性先进先出. 在一些项目中我们会遇到对一些数据的Check,如果数据不符合条件将会把不通过的信息返回到界面。但是对于有的数据可能会Check很多条件,如果一个数据一旦很多条件不通过,那么全部错误返回到界面,可能会让用户束手无策。我们有时候往往在一个流程中。只将Check流程中第一个不符合条件的错误提示给用户,让用户修改。首先我们就想到了队列,通过队列将所有的Check方法注册,然后依次出列。执行。

Demo背景:

XX公司招人,对员工的居住地点,姓氏,年龄都有要求.

一.首先我们定义实体Model:

publicclassPerson

{publicstringName {get;set; }publicstringAddress {get;set; }publicintAge {get;set; }

}

publicclassErrorMessage

{publicstringErrorCode {get;set; }publicstringErrorInfo {get;set; }publicoverridestringToString()

{returnstring.Format("{0}:{1}", ErrorCode, ErrorInfo);

}

}

二. 实现方法类:

Note:Queue<Func<Person,ErrorMessage>> 通过Queue定义了一个fun()委托,然后添加了CheckName和CheckAge方法. 分别将方法注册到队列中,然后再出对,执行每一个Check方法,一旦遇到Check不通过,然后就跳出循环.

publicclassPRogram

{publicstaticvoidMain(string[] args)

{

Person person=newPerson()

{

Name="Frank Zhang",

Address="Chengdu",

Age=60};

Queue<Func<Person, ErrorMessage>> myQueue =newQueue<Func<Person, ErrorMessage>>();

ErrorMessage errorMessage=null;

myQueue.Enqueue(CheckName);

myQueue.Enqueue(CheckAge);varcount =myQueue.Count;for(intindex =0; index < count; index++)

{varcheckMethod =myQueue.Dequeue();

errorMessage=checkMethod(person);if(errorMessage !=null)

{

Console.WriteLine(errorMessage.ToString());

break;

}

}

}publicstaticErrorMessage CheckName(Person person)

{if(person !=null&& person.Name.EndsWith("Zhang"))

{returnnewErrorMessage() { ErrorCode ="Error_001", ErrorInfo ="我们不招姓张的"};

}returnnull;

}publicstaticErrorMessage CheckAge(Person person)

{if(person !=null&& person.Age >50)

{returnnewErrorMessage() { ErrorCode ="Error_002", ErrorInfo ="我们不招收老年人"};

}returnnull;

}

}

三. 总结

上面是在项目中看到的一些运用Check的小技巧。感觉还不错。分享出来。希望各位博友有啥好的想法可以分享一下。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有