23
کلمه کلیدی out در سیشارپ برای ارسال پارامترها به صورت ارجاعی به متدها استفاده میشود، با این تفاوت که پارامترهای out باید درون متد مقداردهی شوند. این قابلیت زمانی مفید است که بخواهید یک متغیر بدون مقدار اولیه را به متد ارسال کنید و درون متد به آن مقدار بدهید.
مثال زیر را در نظر بگیرید:
using System;
namespace OutKeywordExample
{
class Program
{
static void Main(string[] args)
{
int result;
CalculateArea(5, 10, out result);
Console.WriteLine("Area: " + result); // خروجی: Area: 50
Console.ReadKey();
}
static void CalculateArea(int length, int width, out int area)
{
area = length * width;
}
}
}
در این مثال، متغیر result بدون مقدار اولیه به متد CalculateArea ارسال میشود. درون این متد، مقدار area محاسبه و به result اختصاص داده میشود.
24
در سیشارپ، enum یا شمارش (Enumeration) راهی برای تعریف مجموعهای از مقادیر ثابت است که میتوانند به یک متغیر اختصاص داده شوند. این مقادیر معمولاً نامهایی هستند که به صورت عددی ذخیره میشوند. برای تعریف یک enum، از کلمه کلیدی enum استفاده میکنیم. به عنوان مثال:
enum Direction
{
North,
East,
South,
West
}
در این مثال، Direction یک enum است که چهار مقدار North، East، South و West را تعریف میکند. به صورت پیشفرض، مقادیر این enum از 0 شروع میشوند و به ترتیب افزایش مییابند، یعنی North برابر 0، East برابر 1، South برابر 2 و West برابر 3 است.
همچنین میتوانید مقادیر پیشفرض را تغییر دهید:
enum Direction
{
North = 3,
East = 5,
South = 7,
West = 9
}
در این حالت، مقادیر به ترتیب 3، 5، 7 و 9 خواهند بود.
25
در اینجا یک مثال ساده از استفاده enum در یک برنامه سیشارپ آورده شده است. این برنامه جهت حرکت را از کاربر میگیرد و بر اساس مقدار enum، پیامی را نمایش میدهد:
using System;
enum Direction
{
North,
East,
South,
West
}
class Program
{
static void Main()
{
Console.WriteLine("Enter a direction (North, East, South, West):");
string input = Console.ReadLine();
Direction direction;
if (Enum.TryParse(input, true, out direction))
{
switch (direction)
{
case Direction.North:
Console.WriteLine("You are heading North.");
break;
case Direction.East:
Console.WriteLine("You are heading East.");
break;
case Direction.South:
Console.WriteLine("You are heading South.");
break;
case Direction.West:
Console.WriteLine("You are heading West.");
break;
default:
Console.WriteLine("Unknown direction.");
break;
}
}
else
{
Console.WriteLine("Invalid direction entered.");
Console.ReadKey();
}
}
}
در این مثال:
- یک enum به نام Direction تعریف شده است که چهار مقدار North، East، South و West دارد.
- برنامه از کاربر یک جهت میگیرد و آن را به یک مقدار enum تبدیل میکند.
- بر اساس مقدار enum، یک پیام مناسب نمایش داده میشود.
این برنامه به شما کمک میکند تا بفهمید چگونه میتوانید از enum برای مدیریت مجموعهای از مقادیر ثابت در برنامههای خود استفاده کنید.
26
در سیشارپ، struct (ساختار) یک نوع دادهی مقداری است که میتواند دادهها و عملکردهای مرتبط را در خود جای دهد. برای تعریف یک ساختار از کلمه کلیدی struct استفاده میشود. به عنوان مثال:
public struct Employee
{
public int Id;
public string Name;
public Employee(int id, string name)
{
Id = id;
Name = name;
}
public void DisplayInfo()
{
Console.WriteLine($"ID: {Id}, Name: {Name}");
}
}
در این مثال، یک ساختار به نام Employee تعریف شده است که شامل دو فیلد Id و Name و یک سازنده برای مقداردهی اولیه این فیلدها است. همچنین یک متد DisplayInfo برای نمایش اطلاعات کارمند وجود دارد.
ساختارها در سیشارپ معمولاً برای طراحی نوعهای دادهای کوچک و متمرکز بر داده استفاده میشوند که رفتار کمی دارند یا اصلاً ندارند.
27
بیایید یک مثال کامل از استفاده از struct در سیشارپ را بررسی کنیم. فرض کنید میخواهیم اطلاعات مربوط به یک کتابخانه را مدیریت کنیم. هر کتاب شامل عنوان، نویسنده، و سال انتشار است. همچنین میخواهیم یک متد برای نمایش اطلاعات کتاب داشته باشیم.
using System;
public struct Book
{
public string Title;
public string Author;
public int Year;
// سازنده برای مقداردهی اولیه فیلدها
public Book(string title, string author, int year)
{
Title = title;
Author = author;
Year = year;
}
// متد برای نمایش اطلاعات کتاب
public void DisplayInfo()
{
Console.WriteLine($"Title: {Title}, Author: {Author}, Year: {Year}");
}
}
class Program
{
static void Main()
{
// ایجاد نمونهای از ساختار Book
Book book1 = new Book("1984", "George Orwell", 1949);
Book book2 = new Book("To Kill a Mockingbird", "Harper Lee", 1960);
// نمایش اطلاعات کتابها
book1.DisplayInfo();
book2.DisplayInfo();
Console.ReadKey();
}
}
در این مثال:
- تعریف ساختار Book: ساختار Book شامل سه فیلد Title، Author و Year است.
- سازنده: سازندهای برای مقداردهی اولیه فیلدها تعریف شده است.
- متد DisplayInfo: این متد اطلاعات کتاب را در کنسول نمایش میدهد.
- کلاس Program: در این کلاس، دو نمونه از ساختار Book ایجاد شده و اطلاعات آنها نمایش داده میشود.
این مثال نشان میدهد که چگونه میتوان از ساختارها برای مدیریت دادههای مرتبط استفاده کرد.
28
یک مثال ساده
using System;
namespace CA_test63
{
class Program
{
struct Student
{
public int Code;
public string Name;
public string LastName;
}
static void Main(string[] args)
{
int n;
Student st;
//st.Name = "rahim";
//st.LastName = "lotfi";
//st.Code = 50;
st.Code = Convert.ToInt32(Console.ReadLine());
st.Name = Console.ReadLine();
st.LastName = Console.ReadLine();
Console.Write(st.Code+" : "+st.Name+"\t"+st.LastName);
Console.ReadKey();
}
}
}
Program.cs
حجم:
4.9K
29
1- برای اضافه کردن id و نام و فامیل
2- خروج
3- چاپ
4- جستجو
5- ویرایش
6- حذف
7- بازیابی
30
از توابع بازگشتی که داخل خودش ، خودش را فراخوانی می کند که می توانیم به جای حلقه استفاده کرد
static void Main()
{
Show1to10(1); // از یک شروع شود
Console.WriteLine("------------------------------");
show5to50(5); // از پنج شروع می شود
Console.ReadKey();
}
public static void Show1to10(int n)
{
if (n <= 10) //عدد تا 10 پایان می یابد
{
Show1to10(n + 1);
Console.WriteLine(n); // اگر کنسول بعد از فرا خوانی باشد اعداد از آخر به بعد کم می شود
}
}
public static void show5to50(int n)
{
if (n <= 50) // عدد تا 50 پایان می یابد
{
Console.WriteLine(n); // اگر کنسول قبل از فرا خوانی باشد عدد از پنج شروع میشد به بالا
show5to50(n + 5);
}
}
1
کلاسها در سیشارپ (C#) یکی از اصول اساسی برنامهنویسی شیگرا هستند. یک کلاس به عنوان یک الگو یا قالب برای ایجاد اشیاء با ویژگیها و رفتارهای خاص عمل میکند. در اینجا یک مثال ساده از نحوه تعریف یک کلاس در سیشارپ آورده شده است:
class MyClass
{
// سطح دسترسی
// private خصوصی
// public عمومی
// protected فقط دسترسی فضای نام
public static int Sum(int a, int b)
{
return a + b;
}
private static string Fullname(string name, string family)
{
return name + " " + family;
}
و در کلاس Program
static void Main(string[] args)
{
int sum = MyClass.Sum(4, 5);
Console.WriteLine(sum);
Console.ReadKey();
}
2
سطوح دسترسی (Access Modifiers) در سیشارپ مشخص میکنند که اعضای یک کلاس (مانند متغیرها و متدها) از کجا و چگونه قابل دسترسی هستند. در سیشارپ، پنج سطح دسترسی اصلی وجود دارد:
1- public:
اعضایی که با این سطح دسترسی تعریف میشوند، از همه جا قابل دسترسی هستند.
public class MyClass
{
public int MyProperty { }
}
2- private:
اعضایی که با این سطح دسترسی تعریف میشوند، فقط در داخل همان کلاس قابل دسترسی هستند.
public class MyClass
{
private int myField;
}
3- protected:
اعضایی که با این سطح دسترسی تعریف میشوند، فقط در داخل همان کلاس و کلاسهای مشتق شده از آن قابل دسترسی هستند.
public class MyClass
{
protected int myField;
}
4- internal:
اعضایی که با این سطح دسترسی تعریف میشوند، فقط در داخل همان اسمبلی (پروژه) قابل دسترسی هستند.
internal class MyClass
{
internal int MyProperty { }
}
5- protected internal:
اعضایی که با این سطح دسترسی تعریف میشوند، در داخل همان اسمبلی و همچنین در کلاسهای مشتق شده از آن قابل دسترسی هستند.
public class MyClass
{
protected internal int MyProperty { }
}
این سطوح دسترسی به شما کمک میکنند تا کنترل بیشتری بر روی نحوه دسترسی به اعضای کلاسها و امنیت دادهها داشته باشید.
آیا نیاز به توضیحات بیشتری در مورد هر یک از این سطوح دسترسی دارید؟ یا سوال دیگری در مورد سیشارپ دارید؟ خوشحال میشوم کمک کنم!
3
در سیشارپ، تفاوتهای مهمی بین اعضای static و نمونهسازی (instance) وجود دارد
1- دسترسی: اعضای static بدون نیاز به نمونهسازی قابل دسترسی هستند، در حالی که اعضای نمونه فقط از طریق یک شیء قابل دسترسی هستند.
2- حافظه: اعضای static تنها یک بار در حافظه بارگذاری میشوند و بین تمام نمونههای کلاس مشترک هستند. اما هر نمونه از کلاس، نسخهای جداگانه از اعضای نمونه دارد.
3- سازندهها: کلاسهای static نمیتوانند سازندههای نمونه داشته باشند، اما میتوانند سازندههای static داشته باشند که فقط یک بار اجرا میشوند.
4
نمونهسازی (Instantiation) در سیشارپ به فرآیند ایجاد یک شیء از روی یک کلاس گفته میشود. این فرآیند باعث میشود یک نمونه بر اساس ساختار کلاس مورد نظر در بخش Heap از حافظه ساخته شود و سپس آدرس آن نمونه در متغیری از جنس کلاس مورد نظر در Stack قرار گیرد.
برای نمونهسازی از یک کلاس، از کلمه کلیدی new استفاده میشود. در اینجا یک مثال ساده آورده شده است:
class Car
{
public string CarName;
public int CarSpeed;
public string CarModel;
}
و در کلاس Program
class Program
{
static void Main(string[] args)
{
Car car1 = new Car();
car1.CarName = "pride";
car1.CarSpeed = 100;
car1.CarModel = "1400";
Car car2 = new Car(); // car1 و car2
// جدا هستند و هیچ ربطی باهم ندارند
car2.CarName = "pykan";
car2.CarSpeed = 220;
car2.CarModel = "1388";
Console.WriteLine(car1.CarName + " " + car1.CarSpeed + " " + car1.CarModel);
Console.WriteLine(car2.CarName + " " + car2.CarSpeed + " " + car2.CarModel);
Console.ReadKey();
}
}