الگوی طراحی builder ، برای ساختن اشیاء بسیار مفید است؛ اما پروسه ساختن اشیاء آن بسیار پیچده هست و به صورت معمول، این پروسه شامل چندین قسمت میشود. در این مثال ما مشکلات ساختن شیء Person را مورد بررسی قرار میدهیم و این شیء از اشیایی کوچکتر مانند Name ، Surname و یا Primary Contact و غیره نیز تشکیل شده است. class Person : IPerson
{
private string Name { get; }
private string Surname { get; }
private IContact ...
مدتی پیش نیاز پیدا کردم تا فراخوانی متدهایی را Serialize کرده و در مواقعی خاص، آن متدها را فراخوانی کنم که نتیجهی آن را در زیر با هم میبینیم. در نظر بگیرید متدی داریم به شکل زیر: public class EmailSender
{
public void Send(string emailAddress)
{
Console.WriteLine($"an email was sent to {emailAddress}");
}
} و میخواهیم نحوه فراخوانی این متد را Serialize کرده ...
Capturing Outer Variables
یک عبارت لامبدا میتواند از متغیرهای محلی و یا پارامترهای متدی که در آن تعریف شده است، استفاده نماید (Outer Variables). این متغیرها را captured variables مینامند. عبارت لامبدایی که از این متغیرها استفاده میکند، closure نامیده میشود. برای مثال: static void Main()
{
int factor = 2;
Func<int, int> multiplier = n => n * factor;
Console.WriteLi ...
یکی از مفاهیمی که بنظر پیچیده میآمد و هر دفعه موقع مطالعه از آن فرار میکردم، همین بحث COVARIANCE و CONTRAVARIANCE بود. در اینجا قصد دارم به زبان ساده این مفاهیم را شرح دهم. Covariance A را در نظر بگیرید که قابل تبدیل به B باشد. در اینصورت X، دارای پارامتر کواریانس است اگر <X<A قابل تبدیل به <X<B باشد. بدون ذکر مثال شاید این تعریف خیلی ملموس نباشد. پس بهتر است با ذکر مثال به تشریح مفاهیم بپردازیم. نکته: ...
پیشنیازها « پشتیبانی از SIMD در دات نت 4.6 » SIMD یا ترجمه آن به فارسی به معنی «تک دستورالعمل و چند داده»، قابلیت آنرا دارد تا بر روی مقادیر عددی به صورت موازی و با استفاده از پردازنده کار کند. اگر بتوانیم ساختار پروژههای خود را به طوری ایجاد کنیم تا بتوانیم از SIMD در پردازشهای خود استفاده کنیم، سرعت انجام فعالیتها، بسیار زیاد افزایش پیدا خواهند کرد؛ به خصوص این امر در حجمهای پردازشی زیاد محسوس خواهد بود. البته مدیریت ...
یک Delegate نوعی اشارهگر است به توابع در سی شارپ که میتواند ارجاعی را به یک یا چند تابع بخصوص داشته باشد. منظور از توابع در سی شارپ، متدها هستند. امضای یک Delegate باید با متدی که به آن اشاره میکنید یکی باشد. using System;
using System.Windows.Forms;
namespace CSharpDelegates
{
public delegate void Display(string sMsg);
public partial class Form1 : Form
{
public Form1()
{
...
نقشه گوگل در حال حاضر یکی از محبوبترین و کاملترین نقشههای جهان است و امکانات خوبی هم دارد. در این راستا بسیاری از مردم سعی در استفاده از این نقشهها و امکانات آنها دارند. به همین دلیل گوگل در بستههای api خود نیز این مورد را گنجانده است. ولی استفاده از این api مستلزم نوشتن کدهای جاوا اسکرپیتی و شناخت توابع و ثابتهای api گوگل است. اما در هر صورت این مستندات مورد مطالعه قرار میگیرند.
سال گ ...
یکی از مواردی که فشاری بر روی garbage collector را بالا میبرد، تخصیصهای حافظهی مخفی یا Hidden allocations هستند که سبب تخصیصهای حافظهی کوچک و عموما پر تعدادی بر روی heap میشوند. برای نمونه به مثال ذیل دقت کنید و سعی کنید تعداد تخصیصهای حافظهی آن را حدس بزنید: public static void PrintSum(int a, int b)
{
Console.WriteLine("Sum of a {0} b {1} is {2}", a, b, a + b);
}
در این مثال ... سه تخصیص حافظهی کوچک رخ می ...
کلمهی mutable به معنای تغییر پذیر و کلمهی immutable به معنای تغیر ناپذیر در زبان انگلیسی تعریف شدهاند. در دنیای IT این دو واژه نیز همین معنا را دارند. بطور مثال: یک رشتهی mutable، یعنی رشتهای که بتوان آن را تغییر داد و یک رشتهی immutable یعنی رشتهای که غیر قابل تغییر است.
در حین مطالعهی منابع مختلف دربارهی موضوع این مطلب، جملهای را با این مضمون دیدم: برای ساخت کوزه، گل را تا مرطوب هست باید شکل داد. زمانیکه گل ...