ูู ุงูู
ูุงู ุฏูุ ููุชููู
ุนู ู
ู
ูุฒุงุช ูุนููุจ ุงูู Non-Generic Collections ูู C#. ุงูููุงู
ุฏู ู
ุด ุจุณ ุนูู ArrayListุ ูููู ุจููุทุจู ุนูู ูู ุงูู Collections ุงููู ู
ู ุงูููุน ุฏู ุฒู Stack, Queue, Hashtableุ ูุบูุฑูุง.
Advantages of Non-Generic Collections
1. Dynamic Size
ุฃูู
ู
ูุฒุฉ ูู ุงูู Non-Generic Collections ูู ุฅู ุญุฌู
ูุง ุจููุฏุฑ ููุจุฑ ุชููุงุฆููุง ูู
ุง ุจูุถูู ุนูุงุตุฑ ุฌุฏูุฏุฉ.
ูู ุงูู
ุซุงู ุฏูุ ุนู
ููุง ArrayList ุงุณู
ู Numbers ูุญุฏุฏูุง ุงูู capacity ุจุชุงุนุชู ุจู 3. ุฑุบู
ูุฏุฉุ ูุฏุฑูุง ูุถูู 4 ุนูุงุตุฑ ู
ู ุบูุฑ ู
ุง ูุญุตู ุฃู errorุ ูุง ููุช ุงูู compilation ููุง ููุช ุงูุชุดุบูู.
using System;
using System.Collections;
namespace CollectionDemo
{
class Program
{
static void Main(string[] args)
{
ArrayList Numbers = new ArrayList(3);
Numbers.Add(100);
Numbers.Add(200);
Numbers.Add(300);
// The collection grows automatically to accommodate the 4th element
Numbers.Add(400);
foreach (int Number in Numbers)
{
Console.Write(Number + " ");
}
Console.ReadKey();
}
}
}ุฏู ุจูุซุจุช ุฅู ุงูู collections ุฏู ุญุฌู
ูุง ุฏููุงู
ููู ูู
ุฑู. ูู ููุง ุจูุณุชุฎุฏู
array ุนุงุฏูุฉุ ูุงู ููุญุตู runtime exception ูู
ุง ุญุงูููุง ูุถูู ุงูุนูุตุฑ ุงูุฑุงุจุน.
2. Useful Methods
ุงูู
ูุฒุฉ ุงูุชุงููุฉ ูู ุฅููุง ุจุชููุฑ methods ุฌุงูุฒุฉ ูู
ููุฏุฉ ุนุดุงู ูุถูู ููุญุฐู ุนูุงุตุฑ ุจุณูููุฉุ ุญุชู ูู ู
ู ูุต ุงูู collectionุ ูุฏู ุญุงุฌุฉ ุตุนุจุฉ ุฌุฏูุง ูู ุงูู Arrays ุงูุนุงุฏูุฉ.
Disadvantages of Non-Generic Collections
ุจุงูุฑุบู
ู
ู ุงูู
ู
ูุฒุงุช ุฏูุ ุงูู Non-Generic Collections ูููุง ุนููุจ ูุจูุฑุฉ ูู
ูู
ุฉ.
1. Not Type-Safe
ุฃูุจุฑ ุนูุจ ูู ุงูู Non-Generic Collections ูู ุฅููุง ู
ุด Type-Safe. ุงูุณุจุจ ูู ุฅููุง ุจุชุชุนุงู
ู ู
ุน ูู ุงูุจูุงูุงุช ุนูู ุฅููุง ู
ู ููุน objectุ ูุฏู ู
ุนูุงู ุฅููุง ุจุชูุจู ุฃู ููุน ุจูุงูุงุช ู
ู ุบูุฑ ุชุฏููู.
using System;
using System.Collections;
namespace CollectionDemo
{
class Program
{
static void Main(string[] args)
{
ArrayList Numbers = new ArrayList(3);
Numbers.Add(100);
Numbers.Add(200);
Numbers.Add(300);
// It's possible to store a string value in a collection intended for numbers
Numbers.Add("Hi");
// This will cause a runtime error (InvalidCastException)
// when it tries to cast "Hi" to an integer.
foreach (int Number in Numbers)
{
Console.Write(Number + " ");
}
Console.ReadKey();
}
}
}ูู ุงูู
ุซุงู ุงููู ูุงุชุ ุงูู
ูุฑูุถ ุฅู ุงูู ArrayList ุฏู ููุฃุฑูุงู
ุ ููููุง ูุฏุฑูุง ูุถูู ููู string ุนุงุฏู. ุงูููุฏ ููุนู
ู compile ู
ู ุบูุฑ ู
ุดุงููุ ููู ููุช ุงูุชุดุบููุ ุฃูู ู
ุง ุงูู foreach loop ูุญุงูู ูุนู
ู cast ูููู
ุฉ โHiโ ูููุน intุ ุงูุจุฑูุงู
ุฌ ููุถุฑุจ ููุญุตู runtime error.
2. Performance Issues: Boxing and Unboxing
ุงูู ุดููุฉ ุงูุชุงููุฉ ุงููุจูุฑุฉ ูู ุฅููุง ุจุชุฃุซุฑ ุนูู ุฃุฏุงุก ุงูุจุฑูุงู ุฌ ุจุณุจุจ ุนู ููุงุช ุงูู Boxing and Unboxing.
ูู
ุง ุจูุถูู ุฃู value type (ุฒู int) ุฌูู collection ู
ู ุงูููุน ุฏูุ ุจูุชู
ุชุญูููู ุชููุงุฆููุง ูููุน object (ุงููู ูู reference type). ุงูุนู
ููุฉ ุฏู ุงุณู
ูุง Boxing.
ููู
ุง ุจููุฌู ูุณุชุฑุฌุน ุงูููู
ุฉ ุฏูุ ูุงุฒู
ูุญูููุง ุชุงูู ู
ู object ูููุนูุง ุงูุฃุตููุ ูุงูุนู
ููุฉ ุฏู ุงุณู
ูุง Unboxing.
using System;
using System.Collections;
namespace CollectionDemo
{
class Program
{
static void Main(string[] args)
{
ArrayList Numbers = new ArrayList(2);
// Boxing happens here: converting value type (int) to reference type (object)
Numbers.Add(100);
Numbers.Add(200);
// Unboxing happens here: converting object back to int for each iteration
foreach (int Number in Numbers)
{
Console.Write(Number + " ");
}
Console.ReadKey();
}
}
}ุงูุนู
ููุงุช ุฏู ุจุชุถูู ุญู
ู (overhead) ุนูู ุงูุจุฑูุงู
ุฌุ ููู ุจุชุชุนุงู
ู ู
ุน collection ูููุง ุขูุงู ุงูุนูุงุตุฑุ ุงูุฃุฏุงุก ููุชุฃุซุฑ ุจุดูู ู
ูุญูุธ. ุนุดุงู ูุฏูุ ุจูุญุงูู ุฏุงูู
ูุง ูุชุฌูุจ ุนู
ููุงุช ุงูู Boxing ู Unboxing ุบูุฑ ุงูุถุฑูุฑูุฉ ูู ุชุทุจููุงุชูุง.
The Dilemma and The Solution
ุจุงุฎุชุตุงุฑุ ุฅุญูุง ููุง ูุฏุงู ู ุดููุฉ ูููุง ุทุฑููู:
- ุงูู Array: ุขู ู ู ู ูุงุญูุฉ ุงูููุน (Type-Safe) ุจุณ ุญุฌู ู ุซุงุจุช.
- ุงูู Non-Generic Collections: ุญุฌู ูุง ู ุฑู (Auto-Resizing) ุจุณ ู ุด Type-Safe ูุจุชุนุงูู ู ู ู ุดุงูู ุฃุฏุงุก.
ุงูุญู ููู ุดููุฉ ุฏู ูู Generic Collections.
ุงูู Generic Collections ุจุชุฌู
ุน ุจูู ุฃูุถู ู
ุง ูู ุงูุนุงูู
ูู:
- ุงูู Type-Safe: ุจุชุถู ู ุฅูู ุจุชุฎุฒู ููุน ุจูุงูุงุช ูุงุญุฏ ุจุณ.
- ุงูู Auto-Resizing: ุญุฌู ูุง ู ุฑู ูุจููุจุฑ ููุตุบุฑ ุญุณุจ ุงูุญุงุฌุฉ.