.NET | دات نت – Telegram
.NET | دات نت
285 subscribers
121 photos
7 videos
26 files
165 links
دنیای شگفت انگیز و جذاب دات نت رو زیر ذره‌بین می‌بریم و تجربه ها رو به اشتراک میذاریم

به جمع توسعه دهندگان دات نت خوش اومدی 🥰❤️


گروه: https://news.1rj.ru/str/dndevelopchat
Download Telegram
🧠 تفاوت بین readonly و const در سی شارپ — کنترل بهتر روی داده‌های ثابت

اگه بخوای یه مقدار رو توی برنامه ت ثابت نگه داری، احتمالاً بین const و readonly شک میکنی. ولی تفاوتشون فقط توی اسم نیست—توی زمان مقداردهی و نوع استفاده فرق های مهمی دارن.

const
مقدارش باید در زمان کامپایل مشخص باشه
فقط برای انواع پایه مثل int, string, double مناسبه
به صورت ضمنی static هست
نمیتونه مقدارش از بیرون کلاس یا در زمان اجرا تغییر کنه

const double Pi = 3.14;

readonly
مقدارش میتونه در زمان اجرا تعیین بشه
معمولاً توی سازندهی کلاس مقداردهی میشه
میتونه برای انواع پیچیده‌تر هم استفاده بشه
فقط یک بار مقداردهی میشه و بعدش قابل تغییر نیست

readonly DateTime createdAt;

public MyClass() {
createdAt = DateTime.Now;
}

📌 نکتهی حرفه‌ای: اگه مقدار از قبل مشخصه و هیچ وقت تغییر نمیکنه، const انتخاب خوبیه. اگه مقدار باید در زمان اجرا تعیین بشه ولی بعدش ثابت بمونه، از readonly استفاده کن.
3👍3💅1
🧱 تفاوت بین class و struct در سی شارپ — انتخاب درست برای طراحی بهتر

اگه بخوای یه نوع داده‌ی جدید بسازی، معمولاً بین class و struct باید انتخاب کنی. ولی این انتخاب فقط ظاهری نیست—تأثیر زیادی روی عملکرد و رفتار برنامه ت داره.

class
Reference Type
در حافظه‌ی Heap ذخیره میشه
وقتی به متغیر دیگه ای اختصاص داده بشه، فقط آدرسش منتقل میشه
میتونه دارای سازنده، وراثت، و رفتار پیچیده باشه

struct
Value Type
در حافظه‌ی Stack ذخیره میشه
وقتی به متغیر دیگه ای اختصاص داده بشه، یه کپی کامل ساخته میشه
سبک تره، ولی محدودتر: نمیتونه از کلاس دیگه ارث بری کنه
مثال:

struct Point {
public int X;
public int Y;
}

class Person {
public string Name;
public int Age;
}

📌 نکتهی حرفه‌ای: اگه نوع داده ت ساده، سبک، و بدون رفتار پیچیده ست (مثل مختصات یا رنگ)، از struct استفاده کن. اگه نیاز به انعطاف، وراثت، یا مدیریت حافظه داری، class انتخاب بهتریه.
3👍1👾1
🧩 تفاوت بین interface و abstract class در سی شارپ — طراحی منعطف تر، کدنویسی تمیزتر

اگه بخوای یه ساختار پایه برای کلاس هات تعریف کنی، معمولاً بین interface و abstract class باید انتخاب کنی. ولی این انتخاب فقط به ظاهر نیست—روی انعطاف پذیری، تست پذیری، و توسعه‌پذیری پروژه ت تأثیر مستقیم داره.

interface
فقط شامل تعریف متدها و پراپرتی ها هست
هیچ پیاده سازی نداره (تا قبل از C# 8)
یه کلاس میتونه چندین اینترفیس رو پیاده‌سازی کنه
مناسب برای تعریف قراردادهای رفتاری

public interface IShape {
double GetArea();
}

abstract class
میتونه هم تعریف داشته باشه، هم پیاده‌سازی
فقط یه کلاس پایه میتونه ازش ارث بری کنه
میتونه فیلد، سازنده، و متدهای کامل داشته باشه
مناسب برای اشتراک گذاری منطق پایه بین کلاس‌ها

public abstract class Animal {
public abstract void Speak();
public void Eat() {
Console.WriteLine("Eating...");
}
}

📌 نکتهی حرفه‌ای: اگه فقط یه قرارداد رفتاری میخوای، از interface استفاده کن. اگه نیاز به منطق پایه و اشتراک گذاری کد داری، abstract class انتخاب بهتریه.
2👍2
🔁 تفاوت بین override, new, و virtual در سی شارپ — کنترل دقیقتر روی وراثت

اگه با وراثت در سی شارپ کار کرده باشی، حتماً با کلمات کلیدی virtual, override, و new برخورد داشتی. ولی تفاوتشون فقط توی اسم نیست—هرکدوم رفتار متفاوتی در زمان اجرا دارن.

virtual
به متدی در کلاس پایه اجازه میده که قابل بازنویسی باشه
یعنی کلاس‌های فرزند میتونن اون متد رو با override تغییر بدن

public class Animal {
public virtual void Speak() {
Console.WriteLine("Animal sound");
}
}

override
برای بازنویسی متد virtual در کلاس فرزند استفاده میشه
رفتار متد پایه رو تغییر میده

public class Dog : Animal {
public override void Speak() {
Console.WriteLine("Bark");
}
}

new
برای مخفی کردن متد پایه استفاده میشه
یعنی متد جدیدی تعریف میکنی که مستقل از متد پایه عمل میکنه
در زمان اجرای شیء به صورت کلاس پایه، متد پایه اجرا میشه

public class Cat : Animal {
public new void Speak() {
Console.WriteLine("Meow");
}
}

📌 نکتهی حرفه‌ای: اگه میخوای رفتار متد پایه رو تغییر بدی، از override استفاده کن. اگه میخوای متد جدیدی تعریف کنی که مستقل باشه، از new استفاده کن. و برای اینکه متد پایه قابل بازنویسی باشه، باید virtual باشه.

🔗 LinkedIn Post
👍32
📝 String Interpolation در سی شارپ — نوشتن رشته‌ها ساده، خوانا و حرفه‌ای!

یکی از مشکلاتی که خیلی وقت‌ها تو کدنویسی پیش میاد، ترکیب متن و مقادیر متغیره. قبلاً مجبور بودیم با + یا String.Format همه چیزو کنار هم بذاریم، که هم طولانی میشد، هم گاهی کدمون شلوغ و سخت خوانا میشد.
اینجاست که String Interpolation تو سی شارپ به کمک ما میاد! کد رو هم کوتاه‌تر میکنه، هم خواناتر.

چرا String Interpolation جذابه؟
1️⃣خوانایی بیشتر کد: میتونی متغیرها رو مستقیم داخل {} بذاری.
2️⃣کد کوتاه‌تر: نیازی به concat طولانی یا String.Format پیچیده نیست.
3️⃣قابلیت گذاشتن محاسبه و متد داخل {}: یعنی میتونی کارای ساده یا محاسبات رو مستقیم تو رشته داشته باشی.
مثال ساده:

string name = "Hamed";
int age = 20;

Console.WriteLine($"Hi! My name is {name} and I am {age} years old.");
خروجی:
Hi! My name is Hamed and I am 20 years old.

مثال حرفه‌ای‌تر: محاسبه داخل Interpolation

int currentYear = 2025;
int birthYear = 2005;

Console.WriteLine($"Next year, I will be {currentYear - birthYear} years old.");
خروجی:
Next year, I will be 20 years old.
نکات کاربردی:
میتونی فرمت عدد و تاریخ رو هم تو {} مشخص کنی:

double price = 1234.567;
Console.WriteLine($"Product price: {price:C2}");
// C2 برای نمایش به صورت Currency

تو پروژه‌های بزرگ، String Interpolation باعث میشه کد خواناتر و کم خطاتر باشه.
جایگزین عالی برای String.Format هست، مخصوصاً وقتی readability اهمیت داره.

🔗 LinkedIn Post
4👍2
در این هفته قرار از دو پروژه جدید که یکی از اون ها تکمیل شده رونمایی کنیم 🔥

یکی مربوط به ترجمه کتاب هاست.😉
و دیگری هم، دوره های آموزشی رایگان دات نت.😍
👏31👍1
📘 کتاب "C# 12 in a Nutshell" – ترجمه فارسی

بعد از مدت‌ها تلاش، ترجمه کامل این کتاب ارزشمند رو آماده کردم.
این کتاب یکی از جامع‌ترین منابع یادگیری و مرجع زبان سی‌شارپ 12 هست که حالا می‌تونید نسخه فارسی اون رو رایگان از گیت‌هاب بخونید.

🔗 لینک دسترسی:

github.com/hheydarian/csharp-12-in-a-nutshell-persian

امیدوارم به درد علاقه‌مندان دات‌نت و برنامه‌نویس‌های فارسی‌زبان بخوره 💙
11🔥3👨‍💻1🆒1
دوره MCP مایکروسافت | زیرنویس فارسی

با لایک هاتون حمایت کنید❤️


🔗 یوتیوب

🔗 آپارات (نیم بها)
🔥82👍1
دوره گیت هاب کوپایلوت در ویژوال استودیو | زیرنویس فارسی

🔗 یوتیوب

🔗 آپارات (نیم بها)
3❤‍🔥1🔥1💯1🆒1
۱۵۰ نفر شدیم 🥳
خیلی ممنون بخاطر حمایتتون. ❤️🙌
7👏2
«ما لازم نیست از بقیه باهوشتر باشیم.
ما باید از بقیه منظم‌تر باشیم.»
— وارن بافت

این اصل، هم در سرمایه‌گذاری و هم در فلسفه رواقی‌گری بنیادین است.
موضوع نبوغ نیست؛ موضوع رفتار است.

چگونه میتوان هر روز انضباط رواقی را تمرین کرد:

🧘♂️ واکنش هایت را کنترل کن
همه‌چیز ارزش پاسخ دادن ندارد.

📆 ثبات بساز
روالهای منظم مهم‌تر از تلاشهای پراکنده‌اند.

📵 از حواس‌پرتی دوری کن
از زمانت مثل ارزشمندترین داراییات محافظت کن — چون همین است.

🧭 به هدفت پایبند بمان
دنبال نکن — انتخاب کن.

🛠 کار را انجام بده، حتی وقتی خسته‌کننده است
بیشتر مردم در این نقطه متوقف میشوند. این همان برتری توست.

ذهن، مانند یک عضله، با تکرار قویتر میشود.
و انضباط همان تمرین روزانه است.

(با سپاس از @Lara R در پینترست)
👍2
مایکروسافت از آیکون‌های جدید Office رونمایی کرد 😍
5
۵۰ کانال یوتیوب آموزش برنامه نویسی

🟢 Python
1. Core Schafer
2. Sentdex
3. Tech with Time
4. Code with Harry
5. Real Python

🟠 Java
1. Alex Lee
2. Programming with Mosh
3. Java Brains
4. Coding with John

ML
1. Krish Naik
2. Stat Quest with Josh Starmer
3. Data School
4. Connor Shorten

🔵 Go
1. Just For Func
2. Matt Kodyb
3. Nic Jackson

Rust
1. Let's Get Rusty
2. Chris Biscardi

🟡 JavaScript
1. Traversy Media
2. JavaScript Mastery
3. Code Volution
4. Web Dev Simplified
5. Fun Fun Function

🟣 C#
1. I Am Tim Corey
2. Nick Chapsas
3. tutorials EU

🟠 Swift / IOS
1. Sean Allen
2. Kodeco

🔵 Flutter / Dart
1. Flutter
2. Reso Coder

🟤 PHP
1. Traversy Media

🟠 Ruby
1. GoRails

🔵 SQL & Database
1. Net Ninja
2. Caleb Curry

🔴 Web Frameworks
1. Acadmind
2. Net Ninja
3. Fireship

DevOps & Cloud
1. Tech World with Nana
2. A Cloud Guru

🔵 C / C ++
1. Caleb Curry
2. The Cherno

🔴 Kotlin
1. Philipp Lackner
2. Kotlin by JetBrains
3👍2
یادآوری کوتاه به شرکت‌هایی که بر اساس سبز بودن نمودار مشارکت GitHub استخدام می‌کنند:

- همه‌ی توسعه‌دهندگان در پروژه‌های متن‌باز مشارکت نمی‌کنند.
- همه‌ی توسعه‌دهندگان آخر هفته‌هایشان را صرف پوش کردن کد در GitHub نمی‌کنند.
- همه‌ی توسعه‌دهندگان بعد از کار، ساعت‌ها وقت برای ساخت پروژه‌های جانبی ندارند.
- همه‌ی توسعه‌دهندگان نمی‌توانند یا نمی‌خواهند بیرون از شغلشان کدنویسی کنند.
- همه‌ی توسعه‌دهندگان باور ندارند که «خانه‌های سبز بیشتر» به معنای استعداد بیشتر است.

و واقعاً هم اشکالی ندارد.

من از وقتی کارم را شروع کردم، بیرون از شغل روزانه‌ام خیلی کد ننوشته‌ام.
اما این هیچ‌وقت مانع رشد، یادگیری یا حل مسائل سخت دنیای واقعی نشد.


چون کدنویسی در محیط کار خودش درس‌های زیادی دارد:

1. نتایجی که ارائه می‌دهی، مسیر رشد، نفوذ و اعتمادی را شکل می‌دهد که نزد تیم، ذی‌نفعان و مشتریان می‌سازی.
2. بازخورد سریع می‌گیری. همکارانت در موفقیت تو سرمایه‌گذاری کرده‌اند و مسائلی که حل می‌کنی اهمیت واقعی دارند—روی مشتریان اثر می‌گذارند، نه فقط روی تئوری.

پروژه‌های جانبی می‌توانند فوق‌العاده باشند برای کشف فناوری‌های جدید یا ارضای خلاقیت.
اما نگذار کسی قانعت کند که آن‌ها برای اثبات ارزش تو به‌عنوان توسعه‌دهنده ضروری‌اند.

ارزش تو به‌عنوان توسعه‌دهنده در تفاوتی است که در کار ایجاد می‌کنی، مسائلی که حل می‌کنی و اثری که بر جای می‌گذاری.

مسیر شغلی تو با رنگ نمودار GitHub تعریف نمی‌شود.
بلکه با اثری تعریف می‌شود که در جایی که واقعاً اهمیت دارد خلق می‌کنی.


🔗 LinkedIn Post
6👍2🆒1
چرا مفاهیم پایه مهم‌اند

احتمالاً خیلی‌هامان این حس را تجربه کرده‌ایم؛ وقتی وارد دنیای معماری و تکنولوژی‌های جدید می‌شویم، حجم مطالب آن‌قدر زیاد است که گیج می‌شویم. هر منبعی را که باز می‌کنیم پر از الگوهای طراحی و فریم‌ورک‌های پیچیده است.

بسیاری از ما یک‌بار این اشتباه را کرده‌ایم؛ مستقیم سراغ Clean Architecture و DDD رفتیم، بدون آن‌که ابتدا پایه‌ها را درست بلد باشیم. در یک پروژه‌ی ASP .NET Core، تنها به خاطر ندانستن درست async/await یا Dependency Injection، ساعت‌ها زمان از دست رفته است. در ظاهر مشکل از معماری به نظر می‌رسد، اما ریشه‌ی اصلی در ضعف مفاهیم پایه بوده است.

چرا این اتفاق رخ می‌دهد؟
وقتی زبان C# را خوب بلد نباشیم، هر خطا می‌تواند ما را متوقف کند.
وقتی اصول شی‌گرایی یا SOLID را درک نکرده باشیم، پروژه‌ای که کمی بزرگ می‌شود به‌سرعت به کدهای به‌هم‌ریخته تبدیل می‌شود.
وقتی ساختار اصلی .NET را نشناسیم، معماری‌های پیشرفته بیشتر شبیه معما به نظر می‌رسند تا راه‌حل.

راه‌حل
راه‌حل ساده ولی حیاتی این است که یک قدم به عقب برگردیم و روی پایه‌ها تمرکز کنیم. حوزه‌هایی مانند:
- ویژگی‌های C# مثل generics، delegates، LINQ، async/await
- اصول شی‌گرایی و SOLID
- مبانی .NET Core مثل middleware و DI
- ساختمان داده‌ها و الگوریتم‌ها
- مدیریت خطا و دیباگ

نتیجه
وقتی مفاهیم پایه تقویت شوند، معماری‌های مدرن هم معنای واقعی خود را پیدا می‌کنند. جداسازی لایه‌ها در Clean Architecture دیگر یک شعار نیست، بلکه نیاز طبیعی کد است. مدل دامنه در DDD دیگر پیچیده به نظر نمی‌رسد، چون می‌دانیم بر چه اساسی ارزشمند است.

ابزارها و تکنولوژی‌ها هر روز تغییر می‌کنند، اما مفاهیم پایه‌ای همیشه ثابت باقی می‌مانند. اگر در میان پیچیدگی‌های امروز احساس سردرگمی داشته‌ایم، پاسخ اغلب در همان اصول ساده و بنیادی نهفته است.

🔗 LinkedIn Post
👍72
تفاوت کسب‌وکار (𝐁𝐮𝐬𝐢𝐧𝐞𝐬𝐬) و محصول (𝐏𝐫𝐨𝐝𝐮𝐜𝐭)

«بارها در سازمان‌های مختلف دیده‌ام که کسب‌وکار (Business) و محصول (Product) با هم اشتباه گرفته می‌شن.
این اشتباه ساده می‌تونه منجر به شکست پروژه‌های بزرگ بشه.

🔹 کسب‌وکار (Business) یعنی:
- ما برای چه کسی کار می‌کنیم؟ (مشتری)
- چه مشکلی رو حل می‌کنیم؟ (ارزش پیشنهادی)
- چطور پول درمی‌آوریم؟ (مدل درآمدی)
- فرآیندها و عملیات کلان سازمان

🔹 محصول (Product) یعنی:
- ابزاری برای تحقق بخشی از ارزش پیشنهادی
- ویژگی‌ها و تجربه کاربری
- چرخه توسعه و بهبود مستمر
- بخشی از استراتژی کسب‌وکار، نه همه آن

وقتی سازمان‌ها این دو مفهوم رو قاطی می‌کنن:
- تیم‌ها محصول رو صرفاً به‌عنوان «کسب‌وکار» می‌بینن → در نتیجه نوآوری متوقف می‌شه.
- مدیریت، محصول رو فقط یک فیچر تکنولوژیک می‌دونه → ارزش واقعی به مشتری منتقل نمی‌شه.

تجربه من نشون داده که موفق‌ترین سازمان‌ها این دو مفهوم رو درست می‌فهمن:
- Business رو مثل نقشه راه می‌بینن.
- Product رو مثل وسیله‌ای برای رسیدن به مقصد.

📌 پس:
- کسب‌وکار = «چرا و چگونه ارزش ایجاد می‌کنیم»
- محصول = «چه ابزاری می‌سازیم تا اون ارزش منتقل بشه»


🔗 LinkedIn Post
1👍41
پک دمپایی مایکروسافت 😍😄
13😍3