مطالب
SortedSet در دات نت 4

SortedSet قرار گرفته در فضای نام System.Collections.Generic دات نت 4، لیستی از اشیاء به صورت خودکار مرتب شده را ارائه می‌دهد. SortedSet نیز همانند HashSet از اعضای منحصربفردی تشکیل خواهد شد اما اینبار به شکلی مرتب شده. برای پیاده سازی آن از red-black tree data structure استفاده شده است که مهم‌ترین مزیت آن امکان افزودن و یا حذف اشیاء به آن بدون کاهش قابل توجه کارآیی برنامه است.

مثال اول:
using System;
using System.Collections.Generic;

namespace SortedSetTest
{
class Program
{
static void sample1()
{
var setRange = new SortedSet<int> { 2, 5, 6, 2, 1, 4, 8 };

foreach (var i in setRange)
{
Console.WriteLine(i);
}
}

static void Main()
{
sample1();
}
}
}
در این مثال با نحوه‌ی ایجاد این لیست جنریک خود مرتب شونده‌ی تکراری نپذیر (!) آشنا می‌شوید. اگر این مثال را اجرا نمائید، خروجی آن مرتب شده است و همچنین تنها شامل یک عدد 2 است (اعضای تکراری را حذف می‌کند).

مثال دوم:

using System;
using System.Collections.Generic;

namespace SortedSetTest
{
class Program
{
static void sample2()
{
var setRange = new SortedSet<int>();
var random = new Random();

for (int counter = 0; counter < 100; counter++)
{
var rnd = random.Next(-180, 181);
if (!setRange.Add(rnd))
{
Console.WriteLine("Couldn't add {0}", rnd);
}
}

Console.WriteLine("Result set:");
foreach (var item in setRange)
{
Console.WriteLine(item);
}
}

static void Main()
{
sample2();
}
}
}
در این مثال نحوه‌ی افزودن اعضای مختلف به این لیست ویژه، توسط متد Add آن بیان شده است. اگر آیتمی در این لیست موجود باشد، مجددا اضافه نشده و حاصل متد Add آن، False خواهد بود.

مثال سوم:
اگر از سایر انواع سفارشی تعریف شده استفاده نمائید، باید روش مقایسه‌ی آن‌ها را نیز با پیاده سازی اینترفیس استاندارد IComparable ارائه دهید؛ در غیر اینصورت با خطای At least one object must implement IComparable متوقف خواهید شد.

using System;
using System.Collections;
using System.Collections.Generic;

namespace SortedSetTest
{
class FileInfo
{
public string Name { set; get; }
public long Size { set; get; }
}

class FileInfoComparer : IComparer<FileInfo>
{
public int Compare(FileInfo x, FileInfo y)
{
var caseiComp = new CaseInsensitiveComparer();
return caseiComp.Compare(x.Name, y.Name);
}
}


class Program
{

static void sample3()
{
var setRange = new SortedSet<FileInfo>(new FileInfoComparer())
{
new FileInfo
{
Name = "file1.txt",
Size = 100
},
new FileInfo
{
Name = "file2.txt",
Size = 10
},
new FileInfo
{
Name = "file3.txt",
Size = 300
}
};

foreach (var item in setRange)
{
Console.WriteLine(item.Name);
}
}

static void Main()
{
sample3();

Console.WriteLine("Press a key...");
Console.ReadKey();
}
}
}

در این مثال اشیایی از نوع کلاس FileInfo به لیست ویژه‌ی ما اضافه شده‌اند. برای اینکه امکان مقایسه‌ی آن‌ها فراهم باشد ، کلاس FileInfoComparer با پیاده سازی اینترفیس IComparer ، روش مقایسه دو شیء از این دست را ارائه می‌دهد.

نظرات مطالب
شروع به کار با EF Core 1.0 - قسمت 14 - لایه بندی و تزریق وابستگی‌ها
- احتمالا مرتبط است به حالت Transient که در نظر بعدی به آن اشاره کردید. یک نمونه پروژه که از الگوی جاری استفاده می‌کند DNTIdentity است که جزئیات و توضیحات بیشتر آن‌را می‌توانید در گروه ASP.NET Core Identity پیگیری نمائید.
- همچنین مطالب « کار با کلیدهای اصلی و خارجی در EF Code first» و «شروع به کار با EF Core 1.0 - قسمت 13 - بررسی سیستم ردیابی تغییرات» را نیز مطالعه کنید .  
نظرات مطالب
بررسی نحوه‌ی راه اندازی پروژه‌ی Decision
- لطفا سؤالاتی را که مرتبط با «راه اندازی» این پروژه نیستند، در قسمت بازخوردهای اختصاصی آن مطرح کنید. 
- همانطور که عنوان شد: «... پروژه‌ی Decision را می‌توان چکیده‌ی تمام مطالب سایت دانست ...». مثلا: « خودکار کردن تعاریف DbSetها در EF Code first»
بیشتر در اینجا
- مرتبط هستند. «کار با کلیدهای اصلی و خارجی در EF Code first»: روش «سوم» ذکر شده‌ی در آن.
نظرات مطالب
طراحی افزونه پذیر با ASP.NET MVC 4.x/5.x - قسمت اول
از مطلب «تهیه XML امضاء شده جهت تولید مجوز استفاده از برنامه» ایده بگیرید. یک متد GetLicense به اینترفیس IPlugin اضافه کنید و در آن مجوز ارائه شده توسط افزونه را در برنامه‌ی اصلی بررسی کنید (در کلاس PluginsStart و همچنین فایل PluginsMenu.cshtml_). فقط کسانی می‌توانند «XML امضاء شده» تولید کنند که دسترسی به کلیدهای خصوصی و امن شما را داشته باشند.  
نظرات مطالب
Globalization در ASP.NET MVC
با سلام
ضمن تشکر از مطلب بسیار خوبتون
خاصیت DisplayFormat قابلیت استفاده از کلیدهای Resource را ندارد!
لطفا راهنمایی فرمایید که چطور میشه از این خاصیت برای  DisplayFormat  استفاده کرد؟
من می‌خوام برای تاریخ در زبانه فارسی از فرمت  {yyyy-MM-dd}  و در زبانه انگلیسی از
{yyyy-dd-MM}    استفاده کنم.
با سپاس فراوان
نظرات مطالب
EF Code First #10
- روش دیگر تعیین نام صریح کلیدهای خارجی تشکیل شده در سمت دیتابیس در EF Code first استفاده از ویژگی ForeignKey بر روی یک navigation property است. در قسمت سوم این سری به آن اشاره شده است (مورد هشتم متادیتای بررسی شده در آن).
- بله. ولی اگر در این حالت اطلاعات شما در یک گرید نمایش داده شود n هزار بار رفت و برگشت به بانک اطلاعاتی خواهید داشت. در مبحث جاری به آن با ذکر ریزجزئیات و روش حل خاص آن، پرداخته شده است.

اشتراک‌ها
Prototypes در Javascript
هر شیء در جاوا اسکریپت یک خاصیت مخفی به نام __proto__ دارد ...
Prototypes در Javascript
نظرات مطالب
C# 8.0 - Ranges & Indices

از زمان C# 8x می‌توان از شیء Range در متد Take نیز استفاده کرد:

نظرات مطالب
مروری سریع بر اصول مقدماتی MVVM
بله. در همان ViewModel عنوان شده، الگوی مخزن را با توجه به وجود مثلا شیء MainPageModelData  فراخوانی و مقدار دهی کنید.
اشتراک‌ها
جاوا اسکریپت، اجکس، جی کوئری، انگیولار و نود چیستند و کاربرد هر کدام چیست؟

Summary

JavaScript is a language written for websites to run in the client’s browser.

AJAX is a way for JavaScript to request data from a server without refreshing the page or blocking the application.

jQuery is a JavaScript library built to automate and simplify common web tasks like AJAX or animation.

Angular is a hip JavaScript framework which is made for building large, single-page web applications.

Node.js allows JavaScript to be run without a browser, and is commonly used to run web servers. 

جاوا اسکریپت، اجکس، جی کوئری، انگیولار و نود چیستند و کاربرد هر کدام چیست؟