PDA

مشاهده نسخه کامل : سوالی درباره رفرنس های سی شارپ



Speed Racer
13-12-17, 13:42
آقا سجاد چرا از رفرنس visual basic باید در سی شارپ استفاده کنیم خود سی شارپ در این مورد رفرنس نداره


using Microsoft.VisualBasic;


و اگه بین پرانتز های تابع زیر جفت کوتیشن رو نیاریم چرا خطا می گیره


Interaction.InputBox("");



بعد اینکه کدوم یک از کدهای زیر اصولی تره





using Microsoft.VisualBasic;
string a = Interaction.InputBox("");







string a = Microsoft.VisualBasic.Interaction.InputBox("");

ravegoat
14-12-17, 11:25
با سلام،

اضافه کردن مرجع Microsoft.VisualBasic به پروژه ی سی شارپی الزامی نیست. مگر این که شما بخواهید از توابع و کلاس زیر مجموعه ی این مرجع استفاده بفرمایید؛ مانند استفاده از کلاس Interaction. به عبارتی این مرجع به معنی استفاده از ویژوال بیسیک در سی شارپ نیست بلکه به معنی استفاده از دستوراتی هستش که مشابه Visual Basic Runtime پیاده سازی شده اند.

دستور Interaction.InputBox دارای چندین override هستش. وقتی شما عبارت "" رو حذف کنید، یعنی هیچ آرگومانی به دستور InputBox ندادید. هیچ کدوم از این override ها حالتی رو پشتیبانی نمی کنن که شما آرگومان ورودی رو خالی بذارید. این در سی شارپ یعنی خطا.

در مورد سوال آخر؛ بستگی به این داره که اصولی رو چی تعریف کنیم. از دیدگاه خوانایی کد بهتره مرجع با using مورد استفاده قرار بگیره (حالت اول). این طوری طول دستورات کم تر میشه و توسعه دهندگان بهتر می تونن کد رو درک کنن. از طرفی امروزه کامپایلر ها خیلی هوشمند شدند. خودم امتحان نکردم ولی به احتمال زیاد چه در حالت اول و چه در حالت دوم، کامپایلر خروجی EXE یکسانی بده. فقط در مواردی نظیر طراحی Framework یا تعریف کلاس های partial به دلیل جلوگیری از Ambiguous Reference شاید از using استفاده نکنن.

SajjadKhati
19-12-17, 06:48
سلام
البته استاد آرمین ، زحمت جواب رو کشیدن ولی چون به فیلم آموزش هم مربوط میشه ، نکات تکمیلی رو بگم :

1) زبان های دات نت ، براحتی میتونن از ریفرنس های همدیگه استفاده کنن . یعنی استفاده از ریفرنس در دات نت ، ربطی به زبان خاصی نداره (فقط باید دات نت را اپورت کنه) . یعنی در سی شارپ میشه از ریفرنس های زبان های ویژال بیسیک و ... استفاده کرد
من هم از Microsoft.VisualBasic استفاده کردم چون فعلا جایگزین متد Interaction.InputBox در سی شارپ رو نمیدونستم و به این متد هم برای توضیح بیشتر نیاز داشتم (شاید جایگزینی باشه ، نمیدونم)

2) به دلیل اینکه اولین ورودی اون تابع ، رشته میخواد . تابع چیه و ورودی چیه و ... ، در قسمت 21 و بعد گفته شد

3) اساد آرمین ، توضیح کامل دادن