PDA

View Full Version : کروشه در سی شارپ



foxhacker
شنبه 22 شهریور 1399, 13:22 عصر
سلام دوستان عزیز ی سوال دارم درمورد کاربرد کروشه در سیشارپ
منظور من ایندکس ها نیست پس لطفن ب ایندکس ها گیر ندین منظورم کد پایینه

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)]
protected static extern int mciSendString(string lpstrCommand,StringBuilder lpstrReturnString, int uReturnLength,IntPtr hwndCallback);


private void button1_Click(object sender, EventArgs e)
{
int ret = mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);
}


private void button2_Click(object sender, EventArgs e)
{
int ret = mciSendString("set cdaudio door closed", null, 0, IntPtr.Zero);
}
}
}


[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)]
میخاستم بدونم DLLIMPORT که داخل کروشه هست معنیش چیه؟

foxhacker
شنبه 22 شهریور 1399, 13:33 عصر
ببخشید فک کنم کد ها بد نمایش داده شدن لطفن کپی کنین تو ویژوال استودیو درست میشه:لبخند:

the king
شنبه 22 شهریور 1399, 14:28 عصر
ببخشید فک کنم کد ها بد نمایش داده شدن لطفن کپی کنین تو ویژوال استودیو درست میشه:لبخند:

صفت ئه، Attribute ئه. Attribute ها کلاس هایی هستند که وارث کلاس System.Attribute شدن و پسوند Attribute در نام کلاس شون هم برای سهولت در کد نویسی اختیاری است، یعنی مثلا اسم کلاس اش در اصل DllImportAttribute ئه ولی در کد می توانید بجای DllImportAttribute با نام DllImport هم بهش اشاره کنید.
صفت حقیقتا خودش به تنهایی کار خاصی انجام نمیده، یعنی اگر فرضا من برای فیلد یا مشخصه یا کلاس فلان یک صفت MyAttribute درج کنم، MyAttribute خودش کاری انجام نمیده.
اما در روال دیگری مثلا برای کامپایلر کد نویسی شده که اگر صفت فلان رو دیدی، بیا و فلان عمل خاص رو انجام بده، مثلا اگر صفت DllImport رو دیدی، ارتباط با یک متد کتابخانه DLL رو برقرار کن. برای اینکه بدونید هر صفت چه نقشی داره باید راهنمای اون کلاس خاص رو مطالعه کنید چون هر صفت ای نقش و تاثیر کاملا متفاوتی داره.
انواع صفت ها رو داریم، بعضی هاشون عمومی هستند و بعضی هاشون اختصاصی کتابخانه های متفرقه و بعضی هاشون رو هم خودتون برای منظوری خاصی کد نویسی می کنید.

فرضا اگر در نسخه جدید یک کلاس بخواهیم یک متد قدیمی رو با نسخه پیشرفته تر دیگری جایگزین کنیم ولی نخواهیم اون متد قبلی رو حذف کنیم، یک صفت Obsolete رو به متد قدیمی اضافه می کنیم تا با پیامی به برنامه نویس هشدار بده که این متد دیگه منسوخ شده و بهتره ازش استفاده نکنی. یا اگر بخواهیم یک مشخصه در کلاس قابل دسترسی باشه ولی پنهان باشه، از صفت EditorBrowsable استفاده می کنیم. یا اگر بخواهیم در یک کنترل یک مشخصه ای داشته باشیم که در پنجره Properties نمایش داده نشه از مشخصه Browsable استفاده می کنیم، یا اگر بخواهیم یک مجموعه enum تعریف کنیم که فیلدهاش بصورت ترکیبی (نه صرفا تکی) تفسیر می شوند، از صفت Flags استفاده می کنیم.