این دستور همانند دستور Dictionary در سی شارپ می باشد، با این تفاوت که المان ها را براساس کلید المان ها را مرتب سازی می کند.

مثال :

    using System;  
    using System.Collections.Generic;  
      
    public class SortedDictionaryExample  
    {  
        public static void Main(string[] args)  
        {  
            SortedDictionary<string, string> names = new SortedDictionary<string, string>();  
            names.Add("1","Sonoo");    
            names.Add("4","Peter");    
            names.Add("5","James");    
            names.Add("3","Ratan");    
            names.Add("2","Irfan");    
            foreach (KeyValuePair<string, string> kv in names)  
            {  
                Console.WriteLine(kv.Key+" "+kv.Value);  
            }  
        }  
    }  

خروجی :

۱ Sonoo
۲ Irfan
۳ Ratan
۴ Peter
۵ James

ادامه مطلب

Dictionary چیست ؟

با استفاده از Dictionary می توانیم یک map از اطلاعات ایجاد کنیم به این صورت که هر اطلاعات شامل یک کلید است و با استفاده از آن map بروی اطلاعات کار کنیم مثلا جستجو کنیم و بیشتر بروی Structure داده کار می کند. مثال ساده آن خود کتاب Dictionary است شما می توانید با ابتدای حرف به لیستی از کلمات دسترسی پیدا کنید این کار باعث سرعت بخشیدن در عمل جستجو شما می شود. هر Dictionary باید از دو بخش تشکیل شود Key و Value مثل همیشه key کلید ما و value مقدار ما خواهد بود هم می توان براساس key و هم براساس value جتسجو انجام داد.

در ادامه مثال های مختلفی از Dictionary برای شما قرار میدهیم برای تعریف Dictionary می توانید مثل زیر عمل کنید.

using System;
using System.Collections.Generic;
 
class Program
{
    static void Main()
    {
        Dictionary<string, int> dictionary = new Dictionary<string, int>();
 
        dictionary.Add("cat", 2);
        dictionary.Add("dog", 1);
        dictionary.Add("llama", 0);
        dictionary.Add("iguana", -1);
    }
}

ادامه مطلب

این دستور شبیه ساز لیست پیوندی می باشد که می توانید المان ها را به سرعت در آن اضافه و حذف نمایید .

 

مثال :

    using System;  
    using System.Collections.Generic;  
      
    public class LinkedListExample  
    {  
        public static void Main(string[] args)  
        {  
            // Create a list of strings  
            var names = new LinkedList<string>();  
            names.AddLast("Sonoo Jaiswal");  
            names.AddLast("Ankit");  
            names.AddLast("Peter");  
            names.AddLast("Irfan");  
            names.AddFirst("John");//added to first index  
      
            // Iterate list element using foreach loop  
            foreach (var name in names)  
            {  
                Console.WriteLine(name);  
            }  
        }  
    }  

خروجی :
John
Sonoo Jaiswal
Ankit
Peter
Irfan

ادامه مطلب

این دستور شبیه ساز صف می باشد که با متد FIFO المان ها در آن وارد و خارج می شوند.

مثال :

    using System;  
    using System.Collections.Generic;  
      
    public class QueueExample  
    {  
        public static void Main(string[] args)  
        {  
            Queue<string> names = new Queue<string>();  
            names.Enqueue("Sonoo");  
            names.Enqueue("Peter");  
            names.Enqueue("James");  
            names.Enqueue("Ratan");  
            names.Enqueue("Irfan");  
      
            foreach (string name in names)  
            {  
                Console.WriteLine(name);  
            }  
      
            Console.WriteLine("Peek element: "+names.Peek());  
            Console.WriteLine("Dequeue: "+ names.Dequeue());  
            Console.WriteLine("After Dequeue, Peek element: " + names.Peek());  
        }  
    }  


خروجی :
Sonoo
Peter
James
Ratan
Irfan
Peek element: Sonoo
Dequeue: Sonoo
After Dequeue, Peek element: Peter

ادامه مطلب

این دستور شبیه ساز پشته می باشد و با متد LIFO المان در آن داخل و خارج می شوند.

مثال :

    using System;  
    using System.Collections.Generic;  
      
    public class StackExample  
    {  
        public static void Main(string[] args)  
        {  
            Stack<string> names = new Stack<string>();  
            names.Push("Sonoo");  
            names.Push("Peter");  
            names.Push("James");  
            names.Push("Ratan");  
            names.Push("Irfan");  
      
            foreach (string name in names)  
            {  
                Console.WriteLine(name);  
            }  
      
            Console.WriteLine("Peek element: "+names.Peek());  
            Console.WriteLine("Pop: "+ names.Pop());  
            Console.WriteLine("After Pop, Peek element: " + names.Peek());  
      
        }  
    }  

خروجی :
Sonoo
Peter
James
Ratan
Irfan
Peek element: Irfan
Pop: Irfan
After Pop, Peek element: Ratan

ادامه مطلب

این دستور همانند دستور hashset عمل می کند با این تفاوت المان ها را بصورت صعودی مرتب می کند.

مثال :

    using System;  
    using System.Collections.Generic;  
      
    public class SortedSetExample  
    {  
        public static void Main(string[] args)  
        {  
            // Create a set of strings  
            var names = new SortedSet<string>();  
            names.Add("Sonoo");  
            names.Add("Ankit");  
            names.Add("Peter");  
            names.Add("Irfan");  
            names.Add("Ankit");//will not be added  
              
            // Iterate SortedSet elements using foreach loop  
            foreach (var name in names)  
            {  
                Console.WriteLine(name);  
            }  
        }  
    }  

خروجی :
Ankit
Irfan
Peter
Sonoo

ادامه مطلب

HashSet برای ذخیره،حذف و نمایش یک المان استفاده می شود ، این دستور تنها المان های یکتا ذخیره می کند و پیشنهاد می شود که زمانی که می خواهید المان تکراری ذخیره نکنید از آن استفاده نمایید.

مثال :

    using System;  
    using System.Collections.Generic;  
      
    public class HashSetExample  
    {  
        public static void Main(string[] args)  
        {  
            // Create a set of strings  
            var names = new HashSet<string>();  
            names.Add("Sonoo");  
            names.Add("Ankit");  
            names.Add("Peter");  
            names.Add("Irfan");  
            names.Add("Ankit");//will not be added  
              
            // عناصر HashSet با استفاده از حلقه foreachSonoo
Ankit
Peter
Irfan
            foreach (var name in names)  
            {  
                Console.WriteLine(name);  
            }  
        }  
    }  

خروجی :

ادامه مطلب

در فصل های قبل مطالبی را در مورد ArrayList آموختید. یک ArrayList زمانی که مقداری به آن افزوده می‌شود، اندازه خود را افزایش می‌دهد. کالکشن <List<T عملکردی شبیه ArrayList دارد. با این حال <List<T یک کالکشن جنریک بوده و ArrayList یک کالکشن غیر جنریک است.

<List<T را می توان به دو روش زیر تعریف و نمونه سازی کرد :

List<int> intList = new List<int>();

//یا

IList<int> intList = new List<int>();

در نمونه مثال بالا اولین عبارت از متغیری با نوع List استفاده می کند و این در حالی است که عبارت دوم از متغیری با نوع IList بهره می برد. <List<T اینترفیس <IList<T را پیاده سازی می کند. در برنامه نویسی به روش شی گرایی پیشنهاد میشود از اینترفیس ها به جای نوع های واقعی استفاده شود. این مورد می تواند در تست و نگهداری برنامه ها کمک قابل توجهی به ما بکند. بنابراین از <IList<T برای تعریف شی ایی از نوع <List<T استفاده کنید.

ادامه مطلب

این کلاس بخشی ار قضای نام System.IO می باشد که برای ایجاد ،حذف ، انتقال دایرکتوری ها استفاده می شود.

 

خصوصیات DirectoryInfo

خصوصیتتوضیحات
Attributesاین مورد برای دریافت یا تنظیم صفات برای فایل یا دایرکتوری فعلی مورد استفاده قرار می گیرد.
CreationTimeاین مورد برای دریافت یا تنظیم زمان ایجاد فایل یا دایرکتوری فعلی استفاده می شود.
CreationTimeUtcاین استفاده می شود برای تنظیم زمان ایجاد، در زمان جهانی هماهنگ شده (UTC).
Existsاین مقدار برای نشان دادن اینکه آیا دایرکتوری وجود دارد، استفاده می شود.
Extensionاین مورد برای دریافت رشته نماینده قسمت فرمت فایل استفاده می شود.
FullNameاین برای گرفتن مسیر کامل دایرکتوری استفاده می شود.
LastAccessTimeاین برای دریافت یا تنظیم زمان آخرین دسترسی فایل یا دایرکتوری فعلی استفاده می شود .
LastAccessTimeUtcاین استفاده می شود برای دریافت یا تنظیم زمان، در زمان جهانی هماهنگ شده (UTC) که آخرین دسترسی فایل یا دایرکتوری بود.
LastWriteTimeاین برای دریافت و یا تنظیم زمان زمانی که فایل یا دایرکتوری فعلی در آخرین نوشته شد استفاده می شود .
LastWriteTimeUtc
این برای دریافت و یا تنظیم زمان، در زمان جهانی هماهنگ شده (UTC)، زمانی که آخرین فایل یا دایرکتوری در حال حاضر نوشته شده است استفاده می شود .
Nameاین نام برای این نام مستعار DirectoryInfo استفاده می شود.
Parentاین مورد برای دریافت پوشه پدر و مادر یک پوشه مشخص شده استفاده می شود.
Root
این مورد برای دریافت بخش ریشه دایرکتوری استفاده می شود.

ادامه مطلب

از کلاس FileInfo برای انجام عملیات ورودی و خروجی بر روی یک فایل فیزیکی استفاده می‌کنیم. کلاس FileInfo همچون کلاس File قابلیت‌ عملیات بر روی فایل ها را برای ما فراهم می آورد. با این حال با استفاده از کلاس استاتیک FileInfo می توان کنترل بیشتری بر روی عملیات خواندن و نوشتن اعمال کرد.

نمونه مثال زیر نشان می‌دهد که چطور می‌توان بایت ها را از یک فایل خوانده و سپس آنها را به یک رشته با فرمت UTF8 تبدیل کرد :

//Create object of FileInfo for specified path            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");

//Open file for Read\Write
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 

//create byte array of same size as FileStream length
byte[] fileBytes = new byte[fs.Length];

//define counter to check how much bytes to read. Decrease the counter as you read each byte
int numBytesToRead = (int)fileBytes.Length;

//Counter to indicate number of bytes already read
int numBytesRead = 0;

//iterate till all the bytes read from FileStream
while (numBytesToRead > 0)
{
    int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
        
    if (n == 0)
        break;

    numBytesRead += n;
    numBytesToRead -= n;
}

//Once you read all the bytes from FileStream, you can convert it into string using UTF8 encoding
string filestring = Encoding.UTF8.GetString(fileBytes);

ادامه مطلب

این کلاس برای خواندن اطلاعات باینری از یک استریم استفاده می شود.

مثال :

    using System;  
    using System.IO;  
    namespace BinaryWriterExample  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                WriteBinaryFile();  
                ReadBinaryFile();  
                Console.ReadKey();  
            }  
            static void WriteBinaryFile()  
            {  
                using (BinaryWriter writer = new BinaryWriter(File.Open("e:\\binaryfile.dat", FileMode.Create)))  
                {  
                     
                    writer.Write(12.5);  
                    writer.Write("this is string data");  
                    writer.Write(true);  
                }  
            }  
            static void ReadBinaryFile()  
            {  
                using (BinaryReader reader = new BinaryReader(File.Open("e:\\binaryfile.dat", FileMode.Open)))  
                {  
                    Console.WriteLine("Double Value : " + reader.ReadDouble());  
                    Console.WriteLine("String Value : " + reader.ReadString());  
                    Console.WriteLine("Boolean Value : " + reader.ReadBoolean());  
                }  
            }  
        }  
    }  

خروجی :
Double Value : 12.5
String Value : this is string data
Boolean Value : true

ادامه مطلب

از این کلاس برای نوشتن اطلاعات باینری در یک استریم استفاده می شود.

مثال :

    using System;  
    using System.IO;  
    namespace BinaryWriterExample  
    {  
        class Program  
        {  
            static void Main(string[] args)  
            {  
                string fileName = "e:\\binaryfile.dat";  
                using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))  
                {  
                    writer.Write(2.5);  
                    writer.Write("this is string data");  
                    writer.Write(true);  
                }  
                Console.WriteLine("Data written successfully...");    
            }  
        }  
    }  

خروجی :
Data written successfully...

ادامه مطلب

با استفاده از این کلاس شما می توانید یک رشته یا یک توالی از کارکترها را از یک فایل بخوانید.

مثال :

using System;  
using System.IO;  
namespace TextReaderExample  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            using (TextReader tr = File.OpenText("e:\\f.txt"))  
            {  
                Console.WriteLine(tr.ReadToEnd());  
            }  
        }  
    }  
}

ادامه مطلب

TextWriter یک کلاس انتزاعی می باشد، که می توان برای نوشتن یک رشته یا یک سری متوالی از کارکترها در فایل استفاده کرد.این کلاس در فضای System.IO در دسترس است.

مثال :

using System;  
using System.IO;  
namespace TextWriterExample  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            using (TextWriter writer = File.CreateText("e:\\f.txt"))  
            {  
                writer.WriteLine("Hello C#");  
                writer.WriteLine("C# File Handling by JavaTpoint");  
            }  
            Console.WriteLine("Data written successfully...");  
        }  
    }  
}

ادامه مطلب