درک نحوه استفاده صحیح از کالکشن ها، بخشی اساسی در نوشتن برنامههای کارآمد C# است. در دوره ویدیویی Advanced C# Collections موسسه Pluralsight که توسط Simon Robinson تدریس شده است، نحوهی استفاده از طیف وسیعی از کالکشنهای مایکروسافت را یاد خواهید گرفت و نحوهی اطمینان حاصل کردن از منحصر به فرد بودن عناصر کالکشن را با استفاده از مجموعهها و به همراه سفارشی سازی جستجوی کلید دیکشنری و مرتب سازی عناصر درک میکنید.
ابتدا، شما درک بهتری از اصول مقیاس پذیری کالکشنها پیدا میکنید؛ چرا که برای اطمینان از عملکرد قابل قبول در هنگام مواجهه با کالکشنهای بسیار بزرگ مهم است. سپس نحوهی قویتر کردن کدهای مرتبط با کالکشنها را با استفاده از interfaceهای کالکشنها برای جدا سازی کدها و کالکشنهای immutable و فقط خواندنی را برای حفاظت از دادههای خودتان بررسی خواهید کرد. در نهایت، استفاده از کالکشنها در یک سناریوی چند نخی (multi-threaded) را با استفاده کالکشنهای همزمان بررسی خواهید کرد. در پایان این دوره، شما دانش لازم را برای انتخاب مناسبترین کالکشن برای هر شرایطی و بهره گیری از آن به همراه بهترین روشها را در اختیار خواهید داشت.
فیلم آموزشی کالکشنهای پیشرفته سی شارپ موسسه پلورالسایت که توسط Simon Robinson تدریس شده است، دارای زیر نویس انگلیسی تولید شده به صورت خودکار است.
Table of Contents:
Course Overview
- Course Overview
Arrays, Lists, and Collection Equality
- Overview and Prerequisites
- Array Equality
- Most Collections Are Reference Types
- Equality for Collections
- Comparing Collection Values with SequenceEqual()
- Array Assignment
- Why Are Arrays so Strange?
- Arrays under the Hood
- Lists under the Hood
- Summary
Collection Performance
- Overview
- Why Collection Performance Matters
- O(n) Operations and Scalability
- What Does O(1) Mean?
- The Perils of O(n squared)
- Collection Scaling Review
- Introducing the TourBooker Demo
- Importing Countries into a List
- Displaying the List in a ListBox
- Linear Searching with List.Find()
- Sorting: List.Sort() vs. LINQ
- Summary
Inside Dictionaries and Sorted Dictionaries
- Overview
- Creating a Dictionary from a List with LINQ
- Looking up Countries by Key
- Solving Case Sensitivity with an Equality Comparer
- Enumerating Dictionaries
- Dictionary Enumeration Order Is Unspecified
- Introducing SortedDictionary<TKey, TValue>
- SortedList vs. SortedDictionary
- Using a Custom Type as a Key
- Overriding Equality for Keys
- The Importance of GetHashCode()
- Summary
High-performance Modifications with Linked Lists
- Overview and Introducing the Demo
- Introducing LinkedList<T>
- Fast Changes but Slow Lookup
- Nodes and LinkedListNode<T>
- Adding to a Linked List with AddLast()
- Removing from a Linked List with Remove()
- Inserting into a Linked List with InsertBefore()
- LinkedList<T> Pros and Cons
- SortedDictionary Is Back
- Taking Advantage of Dictionary Key Uniqueness
- Summary
Stacks
- Overview
- Introducing Stack<T>
- Setting up the Demo
- Logging with Stack<T>.Push()
- Undoing and Stack<T>.Pop()
- Implementing the Undo Feature
- Characteristics of a Stack
- Summary
Queues
- Overview: Introducing Queue<T>
- Demo: Queuing Booking Requests
- Declaring the Queue
- SelectedItems Is Weakly Typed
- Enqueuing to the Queue
- Dequeue
- Peeking the Queue
- Enumerating the Queue
- Summary
Concurrency and Concurrent Collections
- Overview
- Adding Concurrency to the Demo
- Enqueueing to a Concurrent Queue
- Dequeueing from a Concurrent Queue with TryDequeue()
- Peeking a Concurrent Queue with TryPeek()
- Summary
Merging Data with HashSets and SortedSets
- Overview
- Removing Duplicates with LINQ
- Avoiding Duplicates with Hashset<T>
- Comparing Sets and Dictionaries
- Sorting Items with SortedSet<T>
- Supplying a Comparer
- Comparers and Equality Comparers
- Merging Sets with UnionWith()
- Set Intersection and IntersectWith()
- Summary
Read-only and Immutable Collections
- Overview
- Introducing ReadOnlyDictionary<TKey, TValue>
- Introducing ReadOnlyList<T>
- Read-only Makes Code Robust
- The Loophole in Read-only Collections
- Immutable Collections
- Comparing Immutable and Read-only Collections
- Concurrency
- Summary
Collection Interfaces
- Overview
- List and Dictionary Interfaces
- Enumerating with IEnumerable<T>
- IEnumerable<T> and LINQ Performance
- Checking for Values with Any()
- IReadOnlyList<T> vs. IImmutableList<T>
- Decoupling the Code
- Module Summary
- Course Summary