با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش #c ، را دنبال می کنند. در قسمت قبلی با نوعی از مجموعه ها با نام Stack (پشته) آشنا شدید. در این بخش قصد داریم شما را با معرفی صف در #c که نوعی دیگر از مجموعه های غیر عمومی در زبان #C هستند ،آشنا کنیم.
مجموعه صف در فضای نام System.Collection موجود می باشد. صف عناصر را به سبک FIFO) First In First Out) ذخیره می کند، دقیقا مخالف مجموعه Stack .
توضیحات | پراپرتی |
تعداد کل عناصر در صف را برمی گرداند. | Count |
توضیحات | متد |
اضافه کردن عنصر به صف | Enqueue |
یک مورد را از ابتدای صف حذف و بازمی گرداند. | Dequeue |
یک مورد را از ابتدای صف بازمی گرداند بدون اینکه آن را حذف کند. | Peek |
چک می کند که آیا عنصر مورد نظر در صف موجود هست یا خیر | Contains |
تمام عناصر موجود در صف را حذف می کند | Clear |
ظرفیت صف را به اندازه تعداد عناصر در صف تنظیم می کند. | TrimToSize |
صف یک مجموعه غیر عمومی است. بنابراین شما می توانید هر نوع داده را به یک صف با استفاده از متد Enqueue اضافه کنید.
شکل کلی :
void Enqueue(object obj)
1 2 3 4 5 | Queue queue = new Queue(); queue.Enqueue(3); queue.Enqueue(2); queue.Enqueue(1); queue.Enqueue("Four"); |
متد Dequeue برای بازیابی عناصری که زودتر وارد صف شده اند استفاده می شود . Dequeue اولین عنصر را از یک صف حذف کرده و آن را باز می گرداند، زیرا در صف عناصر به سبک FIFO ذخیره می شوند . متد Dequeue در صف خالی، استثناء InvalidOperation را باز می گرداند. بنابراین همیشه باید قبل از فراخوانی متد Dequeue صف را بررسی کرده و مطمئن شویم که تعداد عناصر آن از ۰ بیشتر باشد.
شکل کلی دستور :
object Dequeue()
1 2 3 4 5 6 7 8 9 10 11 12 | Queue queue = new Queue(); queue.Enqueue(3); queue.Enqueue(2); queue.Enqueue(1); queue.Enqueue("Four"); Console.WriteLine("Number of elements in the Queue: {0}", queue.Count); while (queue.Count > 0) Console.WriteLine(queue.Dequeue()); Console.WriteLine("Number of elements in the Queue: {0}", queue.Count); |
1 2 3 4 5 6 | Number of elements in the Queue: 4 3 2 1 Four Number of elements in the Queue: 0 |
متد Peek اولین عنصر را از یک مجموعه صف باز می گرداند بدون آنکه آن را از صف خارج کند. متد های Peek و Dequeue در یک مجموعه صف خالی، استثناء “InvalidOperationException” را برمی گردانند.
شکل کلی :
object Peek()
1 2 3 4 5 6 7 8 9 10 11 12 13 | Queue queue = new Queue(); queue.Enqueue(3); queue.Enqueue(2); queue.Enqueue(1); queue.Enqueue("Four"); Console.WriteLine("Number of elements in the Queue: {0}", queue.Count); Console.WriteLine(queue.Peek()); Console.WriteLine(queue.Peek()); Console.WriteLine(queue.Peek()); Console.WriteLine("Number of elements in the Queue: {0}", queue.Count); |
خروجی :
1 2 3 4 5 | Number of elements in the Queue: 4 3 3 3 Number of elements in the Queue: 4 |
شما می توانید به عناصر یک صف بدون حذف عناصر آن دسترسی داشته باشید ، برای اینکار باید صف را به آرایه تبدیل کنید، مانند مثال زیر:
1 2 3 4 5 6 7 8 9 10 11 12 | Queue queue = new Queue(); queue.Enqueue(3); queue.Enqueue(2); queue.Enqueue(1); queue.Enqueue("Four"); Console.WriteLine("Number of elements in Queue: {0}", queue.Count); foreach (var i in queue.ToArray()) Console.WriteLine(i); Console.WriteLine("Number of elements in Queue: {0}", queue.Count); |
خروجی :
1 2 3 4 5 6 | Number of elements in Queue: 4 3 2 1 Four Number of elements in Queue: 4 |
متد Contains بررسی می کند که یک عنصر درصف وجود دارد یا خیر. اگر عنصر مشخص شده وجود داشته باشد، عبارت true را برمیگرداند در غير اينصورت، false را برمیگرداند.
شکل کلی :
bool Contains(object obj)
1 2 3 4 5 6 7 8 | Queue queue = new Queue(); queue.Enqueue(3); queue.Enqueue(2); queue.Enqueue(1); queue.Enqueue("Four"); queue.Contains(2); // true queue.Contains(100); //false |
این متد تمام عناصر موجود در صف را حذف می کند.
شکل کلی :
void Clear()
1 2 3 4 5 6 7 8 9 10 11 | Queue queue = new Queue(); queue.Enqueue(3); queue.Enqueue(2); queue.Enqueue(1); queue.Enqueue("Four"); Console.WriteLine("Number of elements in the Queue: {0}", queue.Count); queue.Clear(); Console.WriteLine("Number of elements in the Queue: {0}", queue.Count); |
خروجی :
1 2 | Number of elements in the Queue: 4 Number of elements in the Queue: 0 |
در این بخش با یک مجموعه به نام Queue در زبان #C آشنا شدید .
در بخش بعدی در مورد مجموعه ای دیگر به نام Hashtable در زبان #C صحبت خواهیم کرد.