خرید بک لینک

سلام
من تو #C مبتدی هستم و سئوالات زیر رو دارم :

چرا از یه کلاس وقتی میخایم توی جایی شی ایجاد کنیم نام کلاس رو برامون میاره یعنی اگه سطح دسترسی شو ننویسیم، public میگیره ولی اگه کلاس های تو در تو بنویسیم و اگه برای کلاس داخلی سطح دسترسی مشخص نکنیم ، موقع ایجاد شی ، کلاس داخلی رو توی لیست نمیاره یعنی اتوماتیک سطح دسترسی شو private میگیره بصورت پیش فرض؟
----------------------------------
برای فراخونی متدهای static ای که فضای نام اش هم نام فضای نام اون کلاس و متدی هست که از اونجا فراخونی میکنیم ، بازم باید نام فضای نام را بنویسیم؟
یعنی اگه متد meth در کلاس زیر را :


namespace Project_1
{
class Parent
{
public static void meth()
{
string x = "ali";
}
}
}

بخایم در کلاس زید فراخونی کنیم ، حتما باید نام فضای نام را بنویسیم با اونکه فضای نام هر دو کلاس هم نام هست (یعنی نمیشه بصورت مستقیم نام کلاس و نام متد را فراخوند) ؟ اگه آره ، چرا؟ فضای نام ها که هم نام باشن ، همدیگه رو میشناسن که!! :


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

private void button1_Click(object sender, EventArgs e)
{
Class ClassObj = new Class();
Project_1.Parent.meth();
}
}
}


-----------------------------------
نوع داده ای object چیه؟
تا حالا توضیحاتی که شنیدم و قبل از آشنایی با نوع داده ای var فکر میکردم که نوع داده ای object همون کار var را میکنه
ولی الان فهمیدم var همون چیز مورد نظرم بود یعنی اتوماتیک نوع متغییر را تشخیص میده و خیلی به درد عملیات ریاضی و جاهایی که انواع مختلف عددهای رند و غیر رند با هم بکار میره میخوره و کار آدمو راحت میکنه . نوع متغییر var هم موقع نوشتن کد مشخص میشه ولی object و dynamic انگار موقع اجرا برنامه مشخص میشن
پس نوع داده ای object به درد کجا میخوره؟
انگار نوع dynamic هم داریم. این باز چیه؟ چن تا!!! فرقشون با هم چی ان؟
--------------------
بعد اینکه فایل با پسوند mp3 رو نمیشه بدون ابزار windows media player توی #C پلی کرد؟
----------------------------------
یه سئوال دیگه
چرا وقتی یه کنترل (مثلا button) به پروژه اضافه میکنیم ، ویژال استودیو اتوماتیک با نام همون کنترل ، برامون از کلاس اش یه شی (instance) ایجاد میکنه و ما از اون به بعد فقط کافیه که اعضاشو مثل پروپرتی ها و متدها و متغییرها و ... برای استفاده و فراخونی نام ببریم (که مشخصه با نقطه جدا میشن) ولی برای فراخونی یک فرم جدید باید خودمون یه شی از کلاس اش ایجاد کنیم؟
چرا این فرق هست؟ همه مگه کنترل نیستن؟
--------------------------------------------------
سئوال دیگه اینکه چجوری میشه توی یک رویدادی کدی بنویسیم که وقتی اون رویداد اتفاق میافته ، اتوماتیک یه دکمه از کیبرد رو برامون فشار بده (نه اینکه کاربر خودش فشار بده) مثلا دکمه F1 یا دکمه Delete و ... رو؟
--------------------------------------------------
این کلاس keys در رویدادهای کیبرد دقیقا چیه؟ من کد زیر رو وقتی در رویداد KeyDown (فرم) مینویسم ، هر دکمه ای رو میزنم بهم پیام E رو میده. چرا؟ :

string y = Convert.ToString(Keys.E);
MessageBox.Show(y);

مگه نباید فقط وقتی دکمه E را میزنم فقط عمل کنه؟
------------------------------------------------------
و اینکه من در کد زیر که توی رویداد KeyDown گذاشتم ، میخوام وقتی کلیدهای ترکیبی Ctrl+E رو زدم ، بهم پیام بده ولی نمیده . علت اشتباهم کجاست؟ :


private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control==true && e.KeyData==Keys.E)
{
MessageBox.Show(e.Control.ToString()+" + "+e.KeyData.ToString()+" pressed");
}

}


برچسب: نویسنده: محمد رضا جوادیان تاريخ: چهارشنبه 4 فروردين 1395 ساعت: 16:26

صفحه بندی