国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C#基礎(chǔ)---Queue(隊(duì)列)的應(yīng)用

2019-11-14 16:09:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    Queue隊(duì)列,特性先進(jìn)先出. 在一些項(xiàng)目中我們會(huì)遇到對(duì)一些數(shù)據(jù)的Check,如果數(shù)據(jù)不符合條件將會(huì)把不通過(guò)的信息返回到界面。但是對(duì)于有的數(shù)據(jù)可能會(huì)Check很多條件,如果一個(gè)數(shù)據(jù)一旦很多條件不通過(guò),那么全部錯(cuò)誤返回到界面,可能會(huì)讓用戶束手無(wú)策。我們有時(shí)候往往在一個(gè)流程中。只將Check流程中第一個(gè)不符合條件的錯(cuò)誤提示給用戶,讓用戶修改。首先我們就想到了隊(duì)列,通過(guò)隊(duì)列將所有的Check方法注冊(cè),然后依次出列。執(zhí)行。

      Demo背景:

   XX公司招人,對(duì)員工的居住地點(diǎn),姓氏,年齡都有要求.

   一.首先我們定義實(shí)體Model:

    public class Person    {        public string Name { get; set; }        public string Address { get; set; }        public int Age { get; set; }    }
    public class ErrorMessage    {        public string ErrorCode { get; set; }        public string ErrorInfo { get; set; }        public override string ToString()        {            return string.Format("{0}:{1}", ErrorCode, ErrorInfo);        }    }

       二. 實(shí)現(xiàn)方法類(lèi):

     Note:Queue<Func<Person,ErrorMessage>> 通過(guò)Queue定義了一個(gè)fun()委托,然后添加了CheckName和CheckAge方法. 分別將方法注冊(cè)到隊(duì)列中,然后再出對(duì),執(zhí)行每一個(gè)Check方法,一旦遇到Check不通過(guò),然后就跳出循環(huán).

public class PRogram    {        public static void Main(string[] args)        {            Person person = new Person()            {                Name = "Frank Zhang",                Address = "Chengdu",                Age = 60            };            Queue<Func<Person, ErrorMessage>> myQueue = new Queue<Func<Person, ErrorMessage>>();            ErrorMessage errorMessage = null;            myQueue.Enqueue(CheckName);            myQueue.Enqueue(CheckAge);            var count = myQueue.Count;            for (int index = 0; index < count; index++)            {                var checkMethod = myQueue.Dequeue();                errorMessage = checkMethod(person);                if (errorMessage != null)                {                    Console.WriteLine(errorMessage.ToString());                    break;                }            }        }        public static ErrorMessage CheckName(Person person)        {            if (person != null && person.Name.EndsWith("Zhang"))            {                return new ErrorMessage() { ErrorCode = "Error_001", ErrorInfo = "我們不招姓張的" };            }            return null;        }        public static ErrorMessage CheckAge(Person person)        {            if (person != null && person.Age > 50)            {                return new ErrorMessage() { ErrorCode = "Error_002", ErrorInfo = "我們不招收老年人" };            }            return null;        }    }

          三. 總結(jié)

    上面是在項(xiàng)目中看到的一些運(yùn)用Check的小技巧。感覺(jué)還不錯(cuò)。分享出來(lái)。希望各位博友有啥好的想法可以分享一下。

 

 


           

       


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 文水县| 丰城市| 孙吴县| 大港区| 肥城市| 南靖县| 莱西市| 东宁县| 南昌县| 清水县| 开远市| 新乡市| 壶关县| 岱山县| 泸水县| 道真| 满洲里市| 北流市| 沁水县| 汪清县| 屏山县| 涟源市| 达州市| 南阳市| 沅江市| 海兴县| 金阳县| 三亚市| 阳谷县| 凌云县| 嘉黎县| 原平市| 巍山| 桐柏县| 西安市| 枣强县| 东莞市| 齐河县| 莱芜市| 泰宁县| 卢氏县|