PDA

View Full Version : مبتدی: سوالات ابتدایی تازه واردین به دنیای .NET و سی شارپ



sonixax
پنج شنبه 25 آذر 1389, 20:53 عصر
سلام به همگی ،
خوب برای افرادی که تازه وارد دنیای اپلیکشن نویسی شدند و کلا وارد دنیای برنامه نویسی شدند یک سری سوالاتی پیش میاد که خیلی ابتدایی و پیش پا افتاده هستند و در عین حال ارزش یک تاپیک جداگانه رو ندارند .
مثلا من دیروز در باره ی دو تا موضوع خیلی ابتدایی یک تاپیک تازه زدم و الان با خودم دیدم هر بار بخواهم یک همچین تاپیکی ایجاد کنم حسابی انجمن رو میریزم به هم :لبخند:

برای همین گفتم این تاپیک رو شروع کنم که هم من و هم دوستانی که تازه وارد دنیای .NET شدند سوال های ابتدایی و بعضا خنده دار خودشون برای حرفه ای ها و با تجربه تر ها رو مطرح کنند و دوستان پاسخ بدند .

اگر مدیران یک لطفی بکنند ترتیبی بدهند که این تاپیک همیشه جلوی چشم کاربران باشد فکر میکنم از تعداد تاپیک های بیخودی کم بشه (البته بنده این جسارت رو در راستای یک تاپیک دیگه در سایت با موضوع چگونگی کم کردن تاپیک های تکراری انجام دادم) .

sonixax
پنج شنبه 25 آذر 1389, 20:58 عصر
اولین سوال رو خودم میپرسم :
من تا قبل از این PHP کار میکردم ، به قول یکی از دوستان یک Open Source نویس بدبخت :قهقهه:
وقتی که وارد دنیای Application نویسی شدم دیدم که نوع متغیر ها خیلی بیشتر هستند و تعریفشون متفاوت و حتی متغیر ها هم مثل کلاس ها خاصیت دارند و مثلا برای گرفتن طول یک رشته نیازی نیست اون رو توی یک تابع دیگه قرار بدیم .
برام سوال پیش اومده بود که خوب چرا توی این مدل برنامه ها مثل PHP همه متغیر ها از یک نوع نیستند ! یا همه از نوع رشته نیستند .
تا اینکه رسیدم به قسمتی از کتاب آقای هاشمیان که نوشته بود هر کاراکتر در هر رشته 16 بیت فضا اشغال میکنه در صورتی که هر عدد تا ک حد خاصی تنها 32 بیت اشغال میکنه ، در نتیجه عددی مثل 1234 توی یک رشته 64 بیت فضا میگیره ولی همین عدد توی نوع عدد صحیح تنها 32 بیت میگیره . اینجا بود که گوشی دستم اومد و فهمیدم داستان چیه .

حالا سوالم اینه که نوع VAR که همه مدل مقداری میگیره و موقع کامپایل به صورت خودکار به نوعی که لازمه تبدیل میشه هم همین داستان رو داره ؟ اگر نداره چه نیازی به تعریف کردن N مدل متغیر هست ؟

یک سوال دیگه هم دارم ، WMP چیه ؟ کتاب یا مقاله ی فارسی سراغ دارید که از روش بخونم درست متوجهش بشم ؟

melika999
پنج شنبه 25 آذر 1389, 21:39 عصر
مقدار فضايي كه متغير var اشغال ميكنه خيلي بالاست و اگه همه متغير هامونو var تعريف كنيم حجم برنامه سنگين ميشه

sonixax
پنج شنبه 25 آذر 1389, 22:23 عصر
مقدار فضايي كه متغير var اشغال ميكنه خيلي بالاست و اگه همه متغير هامونو var تعريف كنيم حجم برنامه سنگين ميشه

و VAR رو کجاها باید استفاده کنم ؟

chasbonakam
پنج شنبه 25 آذر 1389, 22:58 عصر
و VAR رو کجاها باید استفاده کنم ؟

زمانی که واقعا ندونیم ، نوع خروجی یا نوع داده چیه!!! از این نوع استفاده می کنیم.

Ghaem66
پنج شنبه 25 آذر 1389, 22:59 عصر
و VAR رو کجاها باید استفاده کنم ؟

خب باید جاهایی تعریف شه که نوع متغیر معلوم نیست.

epsi1on
جمعه 26 آذر 1389, 12:27 عصر
حالا سوالم اینه که نوع VAR که همه مدل مقداری میگیره و موقع کامپایل به صورت خودکار به نوعی که لازمه تبدیل میشه هم همین داستان رو داره؟
سلام دوست من.
همونطوری که فرمودید اشیائی که با نوع داده ای var ایجاد میشن موقع کامپایل برنامه، کامپایلر خودش نزدیکترین نوع رو تشخیص میده و اونرو به نوع مربوطه تبدیل میکنه. یعنی اگر شما به یه شی که نوعش var بود یه شی با نوع string نسبت دادید دیگه نمیتونید یه شی از نوع int رو در خط بعد بهش نسبت بدید. یعنی این کد موقع کامپایل، حاوی خطا میشه:

var obj = "StringValue";
obj =10;
تا اونجایی که من میدونم کلا ما دو جا از نوع var استفاده میکنیم، یکی مثلا برای همین کار (که اصطلاحا به اشیا ایجاد شده با این روش میگن Implicitly Typed Variables) و یکی هم برای استفاده از Anonymous Type ها هست.

در ضمن بعید هم میدونم اگر شی ای رو به صورت Implicit تعیین نوع کنیم این قضیه باعث بشه که حجم بیشتری از فضای حافظه اشغال بشه...


خب باید جاهایی تعریف شه که نوع متغیر معلوم نیست. همونطور که میدونید فقط میشه local Variable ها رو به این سورت تعیین نوع کرد، ممکنه بفرمایید برای local Variable ها مثلا کجا همچین اتفاقی میوفته دوست من؟

ahrimaneahurai
جمعه 26 آذر 1389, 12:56 عصر
این یک نمونه از استفاده از var در wpf هست که یک دایره رو بهش نسبت دادیم


var ellipse = sender as Ellipse;
if (ellipse != null)
ellipse.Fill = new SolidColorBrush(Colors.Orange);

mmd2009
شنبه 27 آذر 1389, 03:51 صبح
با سلام

ببیند شما یک متغیر رو یا به صورت explicitly تعریف می کنید یا به صورت implicitly حالا در مثال های زیر متغیر رو من به صورت explicitly تعریف کردم :



int intAge = 20
string strName="mojtaba"

و حالا متغیر رو به صورت implicitly تعریف می کنم



Var intAge = 20


موفق باشید.

sonixax
شنبه 27 آذر 1389, 04:17 صبح
با سلام

ببیند شما یک متغیر رو یا به صورت explicitly تعریف می کنید یا به صورت implicitly حالا در مثال های زیر متغیر رو من به صورت explicitly تعریف کردم :



int intAge = 20
string strName="mojtaba"

و حالا متغیر رو به صورت implicitly تعریف می کنم



Var intAge = 20


موفق باشید.


پس با این حساب اگر از تعریف به شکل explicitly استفاده کنم کار خیلی راحت تر میشه ، چون وقتی برنامه بزرگ بشه سر متغیر گیج نمیشم و جنس متغیرم رو میدونم و خیلی راحت میتونم تبدیلش کنم ، درست متوجه شدم ؟
بعد کلا چند نوع متغیر در سی شارپ داریم ؟ گویا برای تصاویر یا صدا ها و .. هر کدوم یک نوع متغیر خاص هست ؟!

mmd2009
شنبه 27 آذر 1389, 20:00 عصر
ببینید بیشتر سعی می کنیم که متغیرها رو به صورت explicitly تعریف کنیم ولی واقعا جاهای هست که دیگه باید به سایر تعریفات رجوع کنید.

مثلا بهترین حالت استفاده از Var موقع کار با Linq هست.

برای اطلاعات بیشتر این لینک ها رو مطالعه کنید

Implicitly Typed Local Variables (C# Programming Guide) (http://msdn.microsoft.com/en-us/library/bb384061.aspx)


Type Relationships in LINQ Query Operations (C#) (http://msdn.microsoft.com/en-us/library/bb397924.aspx)

epsi1on
یک شنبه 28 آذر 1389, 01:01 صبح
پس با این حساب اگر از تعریف به شکل explicitly استفاده کنم کار خیلی راحت تر میشه ، چون وقتی برنامه بزرگ بشه سر متغیر گیج نمیشم و جنس متغیرم رو میدونم و خیلی راحت میتونم تبدیلش کنم ، درست متوجه شدم ؟

نه دوست من خود visual Studio هم بعنوان یک IDE اینو متوجه میشه.
در مجموع باید خدمتتون عرض کنم تا جایی که من اظلاع دارم هیچ تفاوتی بین اینکه Implicitly یا Explicitly بخواید Local Variable هاتون رو ایجاد کنید وجود نداره الا موقع ایجاد کردنش و موقع کامپایل شدن برنامه.
من همیشه همه Local Variable هام رو بصورت Implicit تعریف میکنم، صرفا دلیلش هم اینه که سلیقم اینطوری هست و احساس میکنم برنامم یک دست تر به نظر میرسه وگرنه تا حد اطلاعات من در راندمان برنامه و میزان حاقظه اشغال شده در برنامه هیچ تفاوتی ایجاد نمیشه ...



بعد کلا چند نوع متغیر در سی شارپ داریم ؟ گویا برای تصاویر یا صدا ها و .. هر کدوم یک نوع متغیر خاص هست ؟!

من جایی دیدم یک دسته بنده کلی در مورد انواع داده در دات نت (و سی شارپ) کرده بودند، که همه انواع رو به دو دسته "انواع مقداری" و "انواع ارجایی" تقصیم کرده بودند. که پیشنهاد میکنم جزئیاتش رو در کتاب .Net Framework 2.0 Application Development Foundation ببینید.


ولی واقعا جاهای هست که دیگه باید به سایر تعریفات رجوع کنید.
ممکنه مثالی بزنید از وقتی این شرایط برامون پیش میاد دوست من؟

mo.jalilian
یک شنبه 28 آذر 1389, 02:20 صبح
در سی شارپ 4 نوع جدیدی به نام dynamic اومده که هم اینها رو میزنه کنار و یه چیزی فرای var هست، اما سی شارپ از اول استرانگ تایپ بود و من هم با این خصوصیتش موافقم اما تا حدودی و در بقیه مواقع میشه از داینامیک استفاده کرد

sonixax
یک شنبه 28 آذر 1389, 03:20 صبح
میگم آیا میشه توی C# یک Button رو چرخوند ؟ یعنی Rotate کرد !

mmd2009
یک شنبه 28 آذر 1389, 03:49 صبح
ممکنه مثالی بزنید از وقتی این شرایط برامون پیش میاد دوست من؟ من تو برنامه های 3-Tier واسه متد AddParametr چون نمیدونم مقدار Value چیه واسه همین از Object استفاده می کنم.

******************************************

در مجموع باید خدمتتون عرض کنم تا جایی که من اظلاع دارم هیچ تفاوتی بین اینکه Implicitly یا Explicitly بخواید Local Variable هاتون رو ایجاد کنید وجود نداره الا موقع ایجاد کردنش و موقع کامپایل شدن برنامه.تو Explicitly اصلا نیازی نیست initialized کنیم ولی تو Implicitly حتما باید این کارو بکنیم . و همینطور اینکه وقتی به صورت Implicitly تعریف بشه متغیر دیگه نمیشه Convert کرد بر عکس object .

**************************************

ولی در کل اصلا نمیشه مزیت های Var رو نادیده گرفت.

sia_2007
یک شنبه 28 آذر 1389, 09:32 صبح
شما خبر از Generic method نداشتی که این کار رو کردی ! البته این نظر شخصی منه !!

mmd2009
یک شنبه 28 آذر 1389, 11:16 صبح
@sia_2007 (http://barnamenevis.org/member.php?83515-sia_2007)

اینطوری حرف زدن 3 حالت پیش میاره

1- چیزی که گفتی اصلا ربطی نداره
2- چیزی که گفتی اصلا نیاز نبوده
3- چیزی که گفتی رو بلد نیستی تحلیل کنی

حال داشتی بیشر توضیح بده که بدونیم ماجرا از چه قراره.

epsi1on
یک شنبه 28 آذر 1389, 11:37 صبح
من تو برنامه های 3-Tier واسه متد AddParametr چون نمیدونم مقدار Value چیه واسه همین از Object استفاده می کنم.

از پاسختون ممنونم دوست من.
منظورم این بود که کجا به همچین شرایطی بر میخوریم و متغیرمون رو بصورت Implicit تعریف میکنیم و مشکلمون برطرف میشه؟ الان تو همین شرایط که شما فرمودید Implicitly ایحاد کردن متغیرتون چه کمکی به قضایا میکنه؟!



.تو Explicitly اصلا نیازی نیست initialized کنیم ولی تو Implicitly حتما باید این کارو بکنیم .

ممنونم این رو فراموش کردم. این هم یکی دیگه از تفاوتهای این دو هست. (اگرچه منعی برای استفاده ایجاد نمیکنه و میتونیم متغیری رو که بصورت Implicit ایجاد میکنیم در همون اول با مقدار null مقدار دهیش کنیم.)


همینطور اینکه وقتی به صورت Implicitly تعریف بشه متغیر دیگه نمیشه Convert کرد بر عکس object .

منظورتون از Convert چی هست؟ همون متغیر رو اگه بصورت Explicit تعریف کنیم میشه Convertش کرد؟! فکر میکنم این قضیه Polymorphism ارتباطی به بحث ما نداره که شما وارد بحثش کردید دوست من.

mmd2009
یک شنبه 28 آذر 1389, 12:11 عصر
از پاسختون ممنونم دوست من.
منظورم این بود که کجا به همچین شرایطی بر میخوریم و متغیرمون رو بصورت Implicit تعریف میکنیم و مشکلمون برطرف میشه؟ الان تو همین شرایط که شما فرمودید Implicitly ایحاد کردن متغیرتون چه کمکی به قضایا میکنه؟!

ببینید مثلا تو بانک اطلاعاتی ما می خواهیم 1 رکورد رو ثبت بکنیم. که یکی از فیلدها Int هستش یکی دیگه string و ..... فیلد دیگه هم داریم. واسه اینکه ما اطلاعات رو ثبت بکنیم و باید مقدار رو بدیم و تو معماری 3 لایه فرضا متد AddParametr مقدار value رو از کاربر میگیره و واسه اینکه نیاز نباشه خودمون واسه هر کدوم از فیلد ها نوع تعریف بکنیم میاییم Object مینویسیم که دیگه خود کامپایلر خودش میفهمه مقدار چیه.

***************

در بخش بعدی هم منظورم یه چیزی مثل مثال زیر بود :



object d = "mojtaba";
MessageBox.Show(d.GetType().ToString());

d = 1215;
MessageBox.Show(d.GetType().ToString());


اینکارو مثلا با Var نمیشه کرد. چون نمیتونید وقتی Implicitتعریف کردید اونو دیگه Convert کنید.

mmd2009
یک شنبه 28 آذر 1389, 12:23 عصر
این مقدار تو پرانتز رو هم حواسم نبود ولی اشتباهه :


اگرچه منعی برای استفاده ایجاد نمیکنه و میتونیم متغیری رو که بصورت Implicit ایجاد میکنیم در همون اول با مقدار null مقدار دهیش کنیم

متغیرهای Implicit مقدار null نمیگیرن.

epsi1on
یک شنبه 28 آذر 1389, 17:29 عصر
ببینید مثلا تو بانک اطلاعاتی ما می خواهیم 1 رکورد رو ثبت بکنیم. که یکی از فیلدها Int هستش یکی دیگه string و ..... فیلد دیگه هم داریم. واسه اینکه ما اطلاعات رو ثبت بکنیم و باید مقدار رو بدیم و تو معماری 3 لایه فرضا متد AddParametr مقدار value رو از کاربر میگیره و واسه اینکه نیاز نباشه خودمون واسه هر کدوم از فیلد ها نوع تعریف بکنیم میاییم Object مینویسیم که دیگه خود کامپایلر خودش میفهمه مقدار چیه.

***************

در بخش بعدی هم منظورم یه چیزی مثل مثال زیر بود :



object d = "mojtaba";
MessageBox.Show(d.GetType().ToString());

d = 1215;
MessageBox.Show(d.GetType().ToString());
اینکارو مثلا با Var نمیشه کرد. چون نمیتونید وقتی Implicitتعریف کردید اونو دیگه Convert کنید.
ممنونم از پاسختون. البته اصلا هم قصد کش دادن موضوع رو ندارم ولی بازهم این جواب سوال من نبود.
شما فرمودید

بیشتر سعی می کنیم که متغیرها رو به صورت explicitly تعریف کنیم ولی واقعا جاهای هست که دیگه باید به سایر تعریفات رجوع کنید.من هم پرسیدم کجا ایجاد Local Variable بصورت Implicit مشکل رو حل میکنه؟ که البته بعدش شما توضیحاتی دادید و من هم فکر کردم منظورتون همون منظور اولیتون هست...!


متغیرهای Implicit مقدار null نمیگیرن. چرا دوست من:

var nullString = (String) null;

mmd2009
یک شنبه 28 آذر 1389, 18:09 عصر
بخش اول سوالتون رو متوجه نشدم. ولی کد زیر Null نیست یا بهتر بگم منظور من اون جیزی که شما میگی نیست. تو تعریفات explicitly هم هست که میگه این جور تعاریف متغیر اصلا مقدار پیش فرض null نمیگیرن .


var nullString = (String) null;

کد بالا دقیقا یه همچین چیزیه ( کد زیر ). ولی ما نیتمون این بود که مقدار پیش فرض Null بگیره و بعدا خودمون یا Int بهش بدیم یا مثلا string
فرقش ما object رو خواستم یه طورایی بگم.



var d = "dd";
d = null;


**************************

پ ن : ببخشید ولی دیگه تو این بحث شرکت نمی کنم ولی id من mohajer42 هست. اگر سوالی داشتی بیا اونجا پشت سر هم حرف بزنیم تا منظور همدیگه رو برسونیم به هم . اینطوری یک سال طول میکشه یا من منظور شمارو بفهمم یا شما منظور منو.

quantomquery
یک شنبه 28 آذر 1389, 19:27 عصر
آخیش جنگ تموم شد :لبخند:

سوال : چرا باید یه رفرنس رو اظافه کنیم ؟ آیا با یوزینگ کردن یه رفرنس خود به خود اظافه می شه ؟ اگه الکی چند تا رفرنس رو اظافه کنیم تاثیر خاصی رو برنامه می ذاره ؟

hadi-z
یک شنبه 28 آذر 1389, 19:58 عصر
چرا باید یه رفرنس رو اظافه کنیم ؟

برای اینکه بتونی از توابع و کلاس های خاص موجود تو اون استفاده کنی.


آیا با یوزینگ کردن یه رفرنس خود به خود اظافه می شه ؟

خیر

در حالت using از رفرنس های موجود در سیستم استفاده میکنید

epsi1on
یک شنبه 28 آذر 1389, 20:57 عصر
پ ن : ببخشید ولی دیگه تو این بحث شرکت نمی کنم[/B]
خواهش میکنم دوست عزیز، ولی فکر میکنم صحیح نباشه این کار.
به نظرم مورد بحث روشن هست و اصلا سوال دوستمون بود که بحث رو پیش آورده و صحیح نیست که نا تموم بمونه.
در حال حاظر من هیچ مشکلی با فرمایشات شما ندارم، فقط اینکه فرمودید "متغیرها رو سعی میکنیم Explicit تعریف کنیم الا در شرایط خاص که میریم سراغ Implicit تعریف کردن متغیرها"، الان این برای من هم سوال شد و روشن شدنش فقط مستلزم ارایه یک مثال از جانب شما هست. مثالی که درش کاری رو که نتونیم با تعریف بصورت صریح انجام بدیم با تعریف بصورت غیر صریح انجام میدیم.

mmd2009
یک شنبه 28 آذر 1389, 22:28 عصر
امیدوار بودم به حرف بنده احترام بذارید و بیایید تو ID من و اونجا حلش کنیم مساله رو که متاسفانه با این جمله :


خواهش میکنم دوست عزیز، ولی فکر میکنم صحیح نباشه این کار.
به نظرم مورد بحث روشن هست و اصلا سوال دوستمون بود که بحث رو پیش آورده و صحیح نیست که نا تموم بمونه.

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

************************************************** *

فکر کنم مساله از اینجا شروع شد که من گفتم :


ببینید بیشتر سعی می کنیم که متغیرها رو به صورت explicitly تعریف کنیم ولی واقعا جاهای هست که دیگه باید به سایر تعریفات رجوع کنید.

حالا بعدش من یک مثال زدم که :


من تو برنامه های 3-Tier واسه متد AddParametr چون نمیدونم مقدار Value چیه واسه همین از Object استفاده می کنم.

بعدش هم یکی از دوستان یه چیزی گفت که اصلا به موضوع ربط نداشت و نمیدونم چرا بحث جنریک متود رو اورد وسط چون من اصلا میخواستم مثالی در این باب که شما خواستید بگم ولی فکر کنم اشتباه منظورم رو اصلا متوجه شد اون دوستمون ولی خب به هر حال.

حالا باز سوال پرسیدید که :


الان این برای من هم سوال شد و روشن شدنش فقط مستلزم ارایه یک مثال از جانب شما هست. مثالی که درش کاری رو که نتونیم با تعریف بصورت صریح انجام بدیم با تعریف بصورت غیر صریح انجام میدیم.

در صورتی که من جوابش رو قبلش بهت داده بودم یعنی این :


من تو برنامه های 3-Tier واسه متد AddParametr چون نمیدونم مقدار Value چیه واسه همین از Object استفاده می کنم.

چون نمیدونم مقدار ورودی رشته هست یا عدد یا بایت یا ....

واسه همین Object می نویسیم.

پ ن : تو برنامه نویسی هر کس شیوه ای واسه برنامه نویسی داره و اصلا دلیل خوبی نیست که مثلا شما Local Variables هاتون رو با explicitly بنوسید یا Implicit کسی بهتون خورده بگیره و بگه کارتون اشتباهه چون کلا خیلی وقت ها خروجی خیلی مهمتره و البته تو ایران واقعا مهمتره. دقیقا مثلا شما شاید اینطوری کد بنویسی واسه متغیرها :



// i is compiled as an int
var i = 5;

// s is compiled as a string
var s = "Hello";

// a is compiled as int[]
var a = new[] { 0, 1, 2 };

// expr is compiled as IEnumerable<Customer>
// or perhaps IQueryable<Customer>
var expr =
from c in customers
where c.City == "London"
select c;

// anon is compiled as an anonymous type
var anon = new { Name = "Terry", Age = 34 };

// list is compiled as List<int>
var list = new List<int>();




همونطور که میبینی و مطمئنم خودت میدونی اصلا فرقی نداره چون کامپایلر میدونه چی میخوای تو.

و در اخر امیدوارم منظورم رو بلاخره متوجه شده باشی و اگر نشدی فکر کنم بیان من درست نیست و اینطوری هم فایده نداره چون بیان من تغییر نمیکنه و باز هم اگر این بحث کش پیدا بکنه من نمیتونم درست منظورم رو بیان بکنم.

epsi1on
یک شنبه 28 آذر 1389, 22:57 عصر
امیدوار بودم به حرف بنده احترام بذارید و بیایید تو ID من و اونجا حلش کنیم

من قصدم به هیچ عنوان بی احترامی به فرمایش شما نبوده دوست من، اگر همچین اتفاقی افتاده معضرت خواهی میکنم و برام مهم هست که بدونید همچین قصدی ابدا نداشتم و نخواهم داشت.
صرفا به ابن خاطر که این سوال دوستمون هم بود از شما خواهش کردم مثالی بزنید تا منظورتون رو متوجه بشم، وگر نه خدای ناکرده قصد جسارت نداشتم...


و در اخر امیدوارم منظورم رو بلاخره متوجه شده باشی و اگر نشدی فکر کنم بیان من درست نیست و اینطوری هم فایده نداره چون بیان من تغییر نمیکنه و باز هم اگر این بحث کش پیدا بکنه من نمیتونم درست منظورم رو بیان بکنم.
بازهم این جواب من نبود. من بعنوان جواب فقط چند خط کد از شما خواستم که درش کاری رو که نتونیم با تعریف بصورت صریح انجام بدیم با تعریف بصورت غیر صریح انجام میدیم.
به عنوان پاسخ ازتون درخواست میکنم فقط چند خط کد بنویسید...
ممنون از پاسخ شما...

mmd2009
یک شنبه 28 آذر 1389, 23:53 عصر
public void setdata(object objvalue)
{

......

}


در متد بالا فرضا میخواهیم داده رو ست بکنیم و تو بانک فیلد ها یا از نوع رشته هست یا از نوع int یا .... واسه همین از object استفاده می کنیم که نیاز نباشه 3 متد واسه این بنویسیم.

اینم میگم این فقط یک مثال بود.

epsi1on
دوشنبه 29 آذر 1389, 00:11 صبح
public void setdata(object objvalue)
{

......

}


در متد بالا فرضا میخواهیم داده رو ست بکنیم و تو بانک فیلد ها یا از نوع رشته هست یا از نوع int یا .... واسه همین از object استفاده می کنیم که نیاز نباشه 3 متد واسه این بنویسیم.

اینم میگم این فقط یک مثال بود.
احساس میکنم مغلطه میکنید و این رو بی احترامی تلقی میکنم دوست من ولی در هر حال ممنون از پاسختون.
من هیچ ربطی بین کد شما و این درخواست نمیبینم:
مثالی که درش کاری رو که نتونیم با تعریف بصورت صریح انجام بدیم با تعریف بصورت غیر صریح انجام میدیم بزنید.
این دقیقا فرمایشی هست که شما فرمودید و ازتون خواهش میکنم براش مثالی بیارید...
با تشکر پیشاپیش از پاسختان...

sonixax
دوشنبه 29 آذر 1389, 00:43 صبح
در بخش بعدی هم منظورم یه چیزی مثل مثال زیر بود :



object d = "mojtaba";
MessageBox.Show(d.GetType().ToString());

d = 1215;
MessageBox.Show(d.GetType().ToString());


اینکارو مثلا با Var نمیشه کرد. چون نمیتونید وقتی Implicitتعریف کردید اونو دیگه Convert کنید.

الان یه سوال دیگه برای من پیش اومد ، با وجود Object چه نیازی به VAR هست ؟

mmd2009
دوشنبه 29 آذر 1389, 01:11 صبح
مثالی که درش کاری رو که نتونیم با تعریف بصورت صریح انجام بدیم با تعریف بصورت غیر صریح انجام میدیم بزنید.


دقیقا این حرفو کجا زدم.؟ اگر هر جایی هم زده باشم منظورم این بوده و مطمئنم منظورم رو اشتباهی فهمیدی یا اینکه من منظورم رو درست بیان نکردم.

و اینه اصلا خودت هم نمیدونی از من چی میخوای یا اینکه واقعا من نمیدونم چی باید به شما بگم.

پس مرا بیشتر راهنمایی کنید و عین جمله ای که میخواهید ازش مثال بزنم رو اینجا بذارید و نقل هم بکنید که من اینو زدم یا بکید کدوم پست دقیقا این جمله رو نوشتم.

پ ن : اصلا طرز بیانتون درست نیست. یه طوری حرف میزنی که انگار من واقعا یه جایی اشتباه کردم و میخوای ثابتش کنی که من اشتباه کردم و تازه اگر هم اشتباه کردم شما باید راهنمایی کنید و بگید مثلا اینجا اشتباه کردید و اینطوری راه درسته نه اینکه با این ادب به ظاهر درست ولی باطنا بی معنی این حرف ها رو بیان بکنید و البته انگار کلا مقصود شما از بیان این مسئله ها یه چیزهای دیگست. که اگر قرار باشه حرف من رو توهین حساب کنید دیگه حرف شما از توهین هم گذشته. در کل من خدا که نیستم اشتباه نکنم. انسان جایز الخطاست ولی اون چیزی که مشخصه من به حرفام اعتماد دارم مگر اینکه خلافش ثابت بشه.


********************

فکر کنم فهمیدم مشکل شما چیه.


بیشتر سعی می کنیم که متغیرها رو به صورت explicitly تعریف کنیم ولی واقعا جاهای هست که دیگه باید به سایر تعریفات رجوع کنید. در نقل بالا فکر کنم خیال کردی من میگم باید از var استفاده کنیم در صورتی که اصلا منظور من اینطور نبود. و حاشیه رفتی و کلا حرف من رو تحریف کردی دقیقا عین جمله ای که از من نقل کردی در صورتی که اصلا اینطور نبود و میدونم دقیقا منظور شما استفاده از var بود در صورتی که من اصلا منظورم این نبود :


"متغیرها رو سعی میکنیم Explicit تعریف کنیم الا در شرایط خاص که میریم سراغ Implicit تعریف کردن متغیرها"و اینم یکی دیگه:


مثالی که درش کاری رو که نتونیم با تعریف بصورت صریح انجام بدیم با تعریف بصورت غیر صریح انجام میدیم بزنید.

فکر کنم که نه مطمئنم میخواستی ثابتش کنی که من اشتباه می کنم در صورتی که منظورم رو اشتباهی فهمیده بودی و خودت هم میدونستی اون چیزی که تو ذهنته اصلا نشدنیه و همینطور من میدونم که نشدنیه چون اصلا var حتما باید مقدار اولیه بگیره و واسه متد و شرایط تعریف من اصلا اجازه تعریف نمیده.

حالا باز اگر حرفی داری بزن.

reza2012
دوشنبه 29 آذر 1389, 01:55 صبح
بحث جالبی بود و من مطالبش رو خوندم. از اقای mmd2009 بابت توضیحاتشون ممنونم.
در کل من هم باشما موفقم انگار این دوستمون اصلا منظورش رو میخواست تلقین بکنه یه طورایی و طرز بیانشون هم واقعا جالب نبود.
ادم وقتی یه چیزی رو فکر میکنه درست نیست باید بگه نه اینطوری بیان بکنه. دقیقا من سوال دارم واقعا میخواستین چیرو ثابت بکنید ؟؟؟ خب اگر اقای mmd2009 اشتباه کردن شما راه درست رو به بقیه ما بگو و بگو اینجارو اشتباه کردن.

قصد توهین نداشتم شاد باشید

vandermond
دوشنبه 29 آذر 1389, 02:23 صبح
با سلام به همه دوستان قدیمی و جدید ...
امیدوارم اون دوست قدیمیا منو یادشون نرفته باشه (سه چهار ماهی هست اینو ورا پست نزاشتم فک کنم)...

خب دوستان .. نمیدونم اینجا چه خبره .... جنگ شده؟؟؟؟!!!
خب هر چی هست امیدوارم به خوبی تموم بشه.

به هر حال mmd2009 از کاربران خوب و فعال سایت هستن (مثل من مقطعی کار نمیکنن ایشون:دی) و راستش رو بخواهید منظورش رو من متوجه شدم ولی بازم میگم احتمالا شاید این دوستمون واقعا منظور mmd2009 رو خوب نفهمیده باشه و اینطوری حرف زده.

امیدوارم پست های مفید ادامه دار باشه.

sonixax
دوشنبه 29 آذر 1389, 03:07 صبح
الان یه سوال دیگه برای من پیش اومد ، با وجود Object چه نیازی به VAR هست ؟

یکی از اساتید لطف کنه به داد من هم برسه ، چون بحث دوستان از سوالات ابتدایی رفته تو یه جاهایی که ابتدایی چه عرض کنم خود بیلی هم باشی باید چند بار بخونی تا متوجه بشی :گیج:

پ.ن : با وجود این سایت بنده به یاد گیری هر چه سریعتر یک زبان جدید N^N بار امیدوار تر شدم ، دست همتون درد نکنه :بوس:

mmd2009
دوشنبه 29 آذر 1389, 09:18 صبح
تفاوت دارن. ببین var یک متغیری هست که به صورت کامپایل ترجمه میشه و شما نمیتونی نوع اونو تغییر بدی. دقیقا قبلا تو همین موارد هم گفتم ولی object رو میتونی تغییر بدی و مثلا از رشته ببریش بع integer چون این نوع تعریف به صورت runtime ترجمه میشه.

امیدوارم منظورم رو فهمیده باشی. اگر هم متوجه نشدی بگو بیشتر توضیح میدم.

quantomquery
دوشنبه 29 آذر 1389, 16:32 عصر
تفاوت دارن. ببین var یک متغیری هست که به صورت کامپایل ترجمه میشه و شما نمیتونی نوع اونو تغییر بدی. دقیقا قبلا تو همین موارد هم گفتم ولی object رو میتونی تغییر بدی و مثلا از رشته ببریش بع integer چون این نوع تعریف به صورت runtime ترجمه میشه.

امیدوارم منظورم رو فهمیده باشی. اگر هم متوجه نشدی بگو بیشتر توضیح میدم.



اگه میشه یکم بیشتر توضیح بدین
ممنون

mmd2009
دوشنبه 29 آذر 1389, 18:03 عصر
ببینید اینو در نظر بگیرید :



var N = "mmd2009";//Type = String

N = 120;//Compile time error


الان شما برای var نمیتونید 2 مقدار int و string رو با هم اختیار کنید در صورتی که var هم میتونه string باشه و هم int و.... چوت کامپایلر بهش اجازه نمیده.

ولی کد فوق رو ببینید :



object N = "mmd2009";//Type = String

N = 120;//Right ( type = Int )


یا مثلا برای مقدار دهی اولیه شما مجاز نیستید که برای var مقدار دهی اولیه نکنید ولی برای object محدودیتی ندارید

در کل فوق var اشتباه است چون Implicit نمی توانند مقدار اولیه نگیرند :



object N;//right

var S;//error


الان فرقشون اینه شما وقتی مقدار دهی اولیه بکنی یعنی اینکه یا var رو داری int میکنی یا string یا ..... این یعنی فرقی دیگه نداره چه به صورت Implicit بنویسیش یا explicitly و بسته به نظر خودت داره. ولی object چنین محدودیتی نداره.

یا مثلا نمیتونید برای ورودی یا خروجی برای متد ها ازش استفاده بکنید

اینو ببینید :



public string Returndata(var name)
{
var Name = name;

return (Name);
}


این کد بالا خطای کامپایل داره ولی کد زیر بدون محدودیتی اجرا میشه :



public object Returndata(object name)
{
object Name = name;

return (Name);
}


و البته فرق های دیگه ای هم دارن و فکر بکنم دیگه کافی باشه.

epsi1on
دوشنبه 29 آذر 1389, 22:46 عصر
دقیقا این حرفو کجا زدم.؟ اگر هر جایی هم زده باشم منظورم این بوده و مطمئنم منظورم رو اشتباهی فهمیدی یا اینکه من منظورم رو درست بیان نکردم.

سلام مجدد دوست من.
قبل از هر چیزی باید عرض کنم که نه من سعی دارم ثابت کنم شما اشتباه میکنید و نه سعی دارم بگم خودم حتما و مطمعنا صحیح میگم. فقط دارم سعی میکنم به اتفاق قول برسیم...

الان فکر میکنم دقیقا متوجه شدم نقطه ی متفاوت نظراتمون رو.
با توجه به این جمله:

بیشتر سعی می کنیم که متغیرها رو به صورت explicitly تعریف کنیم ولی واقعا جاهای هست که دیگه باید به سایر تعریفات رجوع کنید. و مثالهایی که زدید من این برداشت رو کردم که ابن طرز تعریف متفیر از نظر شما تعریف بصورت Explicit نیست:


object variable = 10;

(که همونطور که خودتون هم اشاره کردید بعدا میشه متغیرهایی از هر نوع دیگه رو به متغیر variable نسبت داد.)
صحیح متوجه شدم دوست من؟

epsi1on
سه شنبه 30 آذر 1389, 13:07 عصر
بله میتونید متغیرهایی از نوع دیگر ( int و string و... ) رو به متغیر variable نسبت
منظورتون اینه که به همین خاطر این طرز تعریف متغیر Explicit نیست؟
درست متوحه شدم دوست من؟

sara1368
سه شنبه 30 آذر 1389, 14:52 عصر
سلام.
دیدم اینجا تاپیک سوالات تازه وارد هاست پس منم سوالامو اینجا میپرسم.
من میخوام یه فرم رو تنظیم کنم که مثلا اندازه خاصی داشته باشه و رنگ زمینش هم رنگ خاصی باشه و با همین یک بار تنظیم میخوام هر چندتا فرمی که بعد از این فرمم میسازم دقیقا این همون اولیه باشه که تنظیمش کردم باید چیکار کنم؟

tooraj_azizi_1035
سه شنبه 30 آذر 1389, 15:01 عصر
سلام،
Add New> Existing Item امکان اضافه کردن همون فرم رو به پروژه البته با نام جدیدی که می خواهید می ده.

sara1368
سه شنبه 30 آذر 1389, 15:14 عصر
سلام،
Add New> Existing Item امکان اضافه کردن همون فرم رو به پروژه البته با نام جدیدی که می خواهید می ده.
ممکنه بیشتر توضیح بدین؟
من Existing Itemرو دیدم اما وقتی میزنم میخواد از توی فلدر برنامم چیزی انتخاب کنم....که مثلا فرم 1 رو انتخاب میکنم چیزی نمیشه...

quantomquery
سه شنبه 30 آذر 1389, 19:19 عصر
سلام.
دیدم اینجا تاپیک سوالات تازه وارد هاست پس منم سوالامو اینجا میپرسم.
من میخوام یه فرم رو تنظیم کنم که مثلا اندازه خاصی داشته باشه و رنگ زمینش هم رنگ خاصی باشه و با همین یک بار تنظیم میخوام هر چندتا فرمی که بعد از این فرمم میسازم دقیقا این همون اولیه باشه که تنظیمش کردم باید چیکار کنم؟

سلام
فرض کنیم فرم اولیه تنظیم شده شما Form1 باشه و فرمی که جدید می خواهید بسازید form4 باشه :
از یکی از این روش ها استفاده کن :

یا تو روال کلیک یه دکمه بنویس



Form1 form4 = new Form1();
form4.Show();


یا اول form4 رو بساز و از Form1 ارث بری کن یعنی :





namespace t2
{
public partial class Form4 : Form1
{
public Form4()
{
InitializeComponent();
}

}
}



به Form4 : Form1 توجه کن

موفق باشید

kamran00f
چهارشنبه 01 دی 1389, 13:24 عصر
تفاوت دارن. ببین var یک متغیری هست که به صورت کامپایل ترجمه میشه و شما نمیتونی نوع اونو تغییر بدی. دقیقا قبلا تو همین موارد هم گفتم ولی object رو میتونی تغییر بدی و مثلا از رشته ببریش بع integer چون این نوع تعریف به صورت runtime ترجمه میشه.

امیدوارم منظورم رو فهمیده باشی. اگر هم متوجه نشدی بگو بیشتر توضیح میدم.

عذر میخوام یهو میپرم وسط. اینجوری به نظر میرسه استفاده از Object همش سود و فایده هست نسبت به var که مطمئنا var هم یه مزیتی باید داشته باشه نسبت به object وگرنه چنین گونه ی داده ای حذف میشد و میگفتن از همون object جای var استفاده کنید. البته حدسی که خودم میزنم اینه که میشه با کد، مثل typeof یا چیزای دیگه فهمید متغیر var از چه نوعی هست (مثل int, string و ...) ولی درمورد object نمیشه همچین چیزیو فهمید و همیشه جنسش از همون نوع object به نظر میرسه و تو کد نمیتونیم بفهمیم که چه نوعی داره. بنابراین نمیتونیم نسبت به حالتی که وجود داره کارای مورد نظرمون رو انجام بدیم.

مثلا این مثال رو در نظر بگیرید: یه متد داریم که یه پارامتر از نوع object داره. این object هم میدونیم که از قبل یا با متغیر Int مقدار دهی شده یا string. اگه بخوایم در صورت string بودن ازش استفاده کنیم (مثلا در موردش متد substring رو صدا کنیم ) باید اونو به یه string تبدیل (cast) کنیم. ولی اگه int بود exception رخ میده.

آیا من درست متوجه شدم؟!
ممنون از اطلاعات و کمکتون.

epsi1on
چهارشنبه 01 دی 1389, 20:44 عصر
ببینید اینو در نظر بگیرید :



var N = "mmd2009";//Type = String

N = 120;//Compile time error
الان شما برای var نمیتونید 2 مقدار int و string رو با هم اختیار کنید در صورتی که var هم میتونه string باشه و هم int و.... چوت کامپایلر بهش اجازه نمیده.

ولی کد فوق رو ببینید :



object N = "mmd2009";//Type = String

N = 120;//Right ( type = Int )
یا مثلا برای مقدار دهی اولیه شما مجاز نیستید که برای var مقدار دهی اولیه نکنید ولی برای object محدودیتی ندارید

در کل فوق var اشتباه است چون Implicit نمی توانند مقدار اولیه نگیرند :



object N;//right

var S;//error
الان فرقشون اینه شما وقتی مقدار دهی اولیه بکنی یعنی اینکه یا var رو داری int میکنی یا string یا ..... این یعنی فرقی دیگه نداره چه به صورت Implicit بنویسیش یا explicitly و بسته به نظر خودت داره. ولی object چنین محدودیتی نداره.

یا مثلا نمیتونید برای ورودی یا خروجی برای متد ها ازش استفاده بکنید

اینو ببینید :



public string Returndata(var name)
{
var Name = name;

return (Name);
}
این کد بالا خطای کامپایل داره ولی کد زیر بدون محدودیتی اجرا میشه :



public object Returndata(object name)
{
object Name = name;

return (Name);
}
و البته فرق های دیگه ای هم دارن و فکر بکنم دیگه کافی باشه.
سلام دوست من.
انتظار داشتم به سوالم پاسخ بدید، البته ظاهرا برای چند وقتی تشریف ندارید، در هر حال امیدوارم براتون اتفاق بدی نیوفتاده باشه...
و اما در مورد بحث، من قبلا هم خدمتتون عرض کردم قضیه Polymorphismیا همون "چند ریختی" اصلا به بحث ما مربوط نیست، ولی متاسفانه شما اصلا دقت نکردید و همچنان به فرمایش خودتون پافضاری فرمودید.
همونطور که باید بدونید، توی #C قضیه ای داریم بنام ارث بری کلاسها از هم و متعاقب اون همین قضیه چند ریختی رو داریم. و بازهم همونطور که باید بدونید توی #C و کلا دات نت همه کلاسها از کلاس Object ارث بری دارن، پس هر بقولی Local Variable ای که با نوغ Object تعریف شده باشه میتونه به هر شی ای اشاره کنه (یا حاوی هر نوع مقداری باشه).
همونطور هم که خودتون میدونید و اشاره کردید نوغ داده ای بنام var وجود خارجی نداره و موفع کامپایل به نوعی که کامپایلر تشخیص میده تبدیلش میکنه.
شما به صورت Implicit هم میتونید متغیر هایی از نوع object رو تعریف کنید:

var obj = (object)10;
obj = "StringValue";فقط یه خواهشی از شما دارم اونم این هست که وقتی انشالله دوباره تشریف آوردید به عرایض کسی که باهاش صحبت میکنید بیشتر دقت کنید، تا قضیه به اینجا ختم نشه که برای اثبات فرمایشتون مثالهای بی مورد بزنید.
ببخشید اگر لحن صحبتم تند بود، احساس کردم اصلا به صحبتهام دقت نکردید...
با عذر خواهی مجدد از شما دوست عزیزم.
خدا نگهدارتون...

gharaghara
چهارشنبه 01 دی 1389, 23:06 عصر
يه سوال درباره رشته ها و توابع


سلام
لطفا به اين سوال جواب بديد . ممنون

متدي بنويسيد كه كلمه a , b را دريافت كرده و اين دو كلمه را پشت سرهم چسبانده و برگرداند.

با ‍‍Console Application

ممنون

sara1368
شنبه 04 دی 1389, 22:22 عصر
سلام
فرض کنیم فرم اولیه تنظیم شده شما Form1 باشه و فرمی که جدید می خواهید بسازید form4 باشه :
از یکی از این روش ها استفاده کن :

یا تو روال کلیک یه دکمه بنویس



Form1 form4 = new Form1();
form4.Show();


یا اول [/COLOR][/SIZE]
من میخوام پراپرتی هایی که در فرم اولم تنظیم کردم در فرم بعدی هم باشه که دوباره نیاز به تنظیم نباشه.مثلا اجازه مینیمایز یا ماکزیمایز رو که در فرم اول از پراپرتی حذف کردم در فرم بعدی هم نیاره.

quantomquery
یک شنبه 05 دی 1389, 16:06 عصر
من میخوام پراپرتی هایی که در فرم اولم تنظیم کردم در فرم بعدی هم باشه که دوباره نیاز به تنظیم نباشه.مثلا اجازه مینیمایز یا ماکزیمایز رو که در فرم اول از پراپرتی حذف کردم در فرم بعدی هم نیاره.


از مثال استفاده کنید
|
|
|
|
|
V

mmd2009
جمعه 10 دی 1389, 07:44 صبح
سلام دوست من.
انتظار داشتم به سوالم پاسخ بدید، البته ظاهرا برای چند وقتی تشریف ندارید، در هر حال امیدوارم براتون اتفاق بدی نیوفتاده باشه...
و اما در مورد بحث، من قبلا هم خدمتتون عرض کردم قضیه Polymorphismیا همون "چند ریختی" اصلا به بحث ما مربوط نیست، ولی متاسفانه شما اصلا دقت نکردید و همچنان به فرمایش خودتون پافضاری فرمودید.
همونطور که باید بدونید، توی #C قضیه ای داریم بنام ارث بری کلاسها از هم و متعاقب اون همین قضیه چند ریختی رو داریم. و بازهم همونطور که باید بدونید توی #C و کلا دات نت همه کلاسها از کلاس Object ارث بری دارن، پس هر بقولی Local Variable ای که با نوغ Object تعریف شده باشه میتونه به هر شی ای اشاره کنه (یا حاوی هر نوع مقداری باشه).
همونطور هم که خودتون میدونید و اشاره کردید نوغ داده ای بنام var وجود خارجی نداره و موفع کامپایل به نوعی که کامپایلر تشخیص میده تبدیلش میکنه.
شما به صورت Implicit هم میتونید متغیر هایی از نوع object رو تعریف کنید:

var obj = (object)10;
obj = "StringValue";فقط یه خواهشی از شما دارم اونم این هست که وقتی انشالله دوباره تشریف آوردید به عرایض کسی که باهاش صحبت میکنید بیشتر دقت کنید، تا قضیه به اینجا ختم نشه که برای اثبات فرمایشتون مثالهای بی مورد بزنید.
ببخشید اگر لحن صحبتم تند بود، احساس کردم اصلا به صحبتهام دقت نکردید...
با عذر خواهی مجدد از شما دوست عزیزم.
خدا نگهدارتون...

سلام دوست عزیز.

راستش رو بخوای اصلا از لحن تندت ناراحت نیستم. پس نیاز به عذرخواهی نیست.

الان دقیقا شما قصاص قبل از جنایت کردید و هرچی دوست دارید رو گفتید در صورتی که اصلا من جریان بی خبرم.

وقتی چیزی میگی یه پیام به ایمیلم بزن تا بیام جوابت رو بدم ولی که اینطوری ناراحت نشی. من واسه همین ایمیلم رو گذاشتم خداروشکر یکی از دوستان زحمتش رو کشید.

خب ببین این مثالی رو که زدی خب چیز سختی نیست. شما اومدی مقدار var رو object کردی

یعنی اینطوری و اصلا نیازی به مقدار اولیه هم نیست :



object s = new object();
var d = s;


مثالی که زدی رو اگر میتونی برای ورودی توابع بنویس ، چون اگر دقت کردی من گفتم برای ورودی توابع یا همون متدها.

اگر اینکارو کردی من قبول میکنم اشتباه کردم ولی اگر نتونستی اینکارو بکنی پس شما قبول کن اشتباه کردی و اصلا در چیزی دخالت کردی که منظورش رو از اول متوجه نشدی بودی.

لطفا وقتی مقدار ورودی یک تابع رو از نوع var گرفتی و اینجا پست دادی به ایمیل من حتما یک پیام بده که بیام و ببینم حق با شما بوده و من اشتباه می کردم. لطفا اگر این کارو نکردی میل نزن و خودتون اذت نکن چون اصلا دیگه تو بحث شما من شرکت نمی کنم. شما بیشتر بلدی توهین کنی تا از لحاظ علمی بحث کنی و البته خوشحالم که خودتون هم قبول دارید لحنتون تند بوده.

شما اگر دیدی ی چیزی واقعا اشتباه هست مثلا برای من در این مورد که شما میگی ، کافی بود با دلیل و منطق ثابت کنی و نه اینکه همش لقمه رو بپیچونی که اخرش بگی دیدی اینجا اشتباه کردی!!!

البته باز هم میگم ما دنبال کسی که اشتباه میکرده نمی گردیم و من خوشحال میشم اگر اشتباهی که کردم رو با کمک شما حل بکنم.

بای.

alirezamajd
جمعه 10 دی 1389, 10:43 صبح
سلام به عزیزان:
من علیرضا هستم و تازه برنامه نویسی رو شروع کردم من می خواهم یک برنماه بنویسم ولی هر کاری می کنم نمی توانم این کار را انجام دهم
من در قسمتEVENTهای فرم اولیه گزینه ی paintرو انتخاب کردم تا کار گرافیکی انجام دهم.
اگر کسی می دونه من رو کمک کنه:
من یک سورس کد می خواهم به یک دایره با با جهت های روی کیبورد بشود تکان داد مثلا یک دایره رسم بشود در قسمتpaintبعد با برنامه ای که می نویسیم بشود آن را با جهت های روی کیبورد تکان داد
ممنونم

epsi1on
جمعه 10 دی 1389, 12:22 عصر
سلام دوست من.
به نظرم چیزی که من از نوشته هاتون برداشت کردم، هر کس دیگه هم بخونه برداشت میکنه. و به نظرم شما مباحثی کاملا بی ربط رو به هم گره زدید و آخرش هم میفرمایید نه منظور من این نبوده...!



اگر اینکارو کردی من قبول میکنم اشتباه کردم ولی اگر نتونستی اینکارو بکنی پس شما قبول کن اشتباه کردی و اصلا در چیزی دخالت کردی که منظورش رو از اول متوجه نشدی بودی.

اگر منظورتون این بوده که چه بدتر...!
من توی تمام نوشته هام اشاره کردم که فقط Local Variable هارو میشه بصورت Implicit تعریف کرد (نه پارامترهای یک متد رو !!!)
پس با این تفاسیر یه خواهش دیگه هم ازتون دارم، لطفا توی نوشته هاتون دقیقا منطورتون رو بگید و بازهم لطفا، حتی المکان چیزهایی تو نوشتتون نیارید که برداشت خواننده ی نوشتتون رو منحرف کنه...
من واقعا نمیدونم اگر منظور شما فقط تعریف ارگومانهای یک متد با کمک "کلمه کلیدی" var بوده پس زدن این مثال چه موردی داشته؟

ببینید اینو در نظر بگیرید :



var N = "mmd2009";//Type = String

N = 120;//Compile time error



الان شما برای var نمیتونید 2 مقدار int و string رو با هم اختیار کنید در صورتی که var هم میتونه string باشه و هم int و.... چوت کامپایلر بهش اجازه نمیده.

ولی کد فوق رو ببینید :



object N = "mmd2009";//Type = String

N = 120;//Right ( type = Int )

mmd2009
جمعه 10 دی 1389, 22:47 عصر
به نظرم چیزی که من از نوشته هاتون برداشت کردم، هر کس دیگه هم بخونه برداشت میکنه. و به نظرم شما مباحثی کاملا بی ربط رو به هم گره زدید و آخرش هم میفرمایید نه منظور من این نبوده...!
:قهقهه::قهقهه::قهقهه::قهقهه:: هقهه::قهقهه::قهقهه::قهقهه::ق قهه::قهقهه::قهقهه::قهقهه::قه هه:
:قهقهه::قهقهه::قهقهه::قهقهه:: هقهه::قهقهه::قهقهه::قهقهه::ق قهه::قهقهه::قهقهه::قهقهه::قه هه:



اگر منظورتون این بوده که چه بدتر...!
من توی تمام نوشته هام اشاره کردم که فقط Local Variable هارو میشه بصورت Implicit تعریف کرد (نه پارامترهای یک متد رو !!!)
این نوشته من رو هم ببین همون اولش همین رو گفتم.



من تو برنامه های 3-Tier واسه متد AddParametr چون نمیدونم مقدار Value چیه واسه همین از Object استفاده می کنم.
کجای این حرف من اصلا ربطی داشت به local varibale ها ؟؟؟

متاسفانه شما با خودتون مشکل دارید.

من از اولش دارم با متد ها حرف میزنم ولی شما کلا قاطی کردی و به خیالت من دارم در مورد local varibale اونجا حرف میزنم.
همه ی بحث هایی رو که ما در مورد local varibale داشتیم رو شما پیش کشیدی و من هم مجبور بودم بیشتر مشخص کنم موضوع رو برات.

و بارها بهت گفتم منظورم رو اشتباه فهمیدی ولی انگار شما اصلا همه چیز رو اشتباه میفهمی و نمیدونم چرا شما هم مثل احمدی نژاد جمع میبندی؟؟؟ اگر شما نفهمیدی دلیلی نداره بقیه نفهمن.

خود کسی که من جوابش رو دادم منظور من رو فهمید یا حداقل سوالی نپرسید که فکر کنم فهمیده باشه که نپرسیده. ولی اون کسی که نفهمید شما بودی. و گیر 3 پیچ دادی به چیزی که اصلا خودت هم نمیدونی چی بوده.

امیدوارم وقت بار ارزشم رو باز نگیری و قبول کنی اشتباه کردی و ادامه ندی.

البته شاید دوباره واسط وقت بذارم که باز توجیحت کنم ولی امیدوارم خودت بلاخره توجیح بشی و وقت منو الکی نگیری

epsi1on
جمعه 10 دی 1389, 23:50 عصر
البته شاید دوباره واسط وقت بذارم که باز توجیحت کنم ولی امیدوارم خودت بلاخره توجیح بشی و وقت منو الکی نگیری
نه دوست من لازم نیست دوباره وقت بزارید و توجیهم کنید، چون تجربه نشون داده که بحث باز الکی ادامه پیدا میکنه.
من که در آخر منظور شما رو نفهمیدم (البته میتونم بگم تغریبا مطمعن هستم که با این تفاسیر خودتون هم متوجه منظورتون نیستید یا منظورتون متناسب با شرایط تغییر میکنه!)، ولی تمام سعی من روی این هست که چیز بی ربطی به عنوان پاسخ به سوالی داده نشه.
مثلا یکی از چیزهایی که بدیها بی ربط هست (از نظر هر برنامه نویسی #C ای که حداقل اندک تجربیاتی در زمینه های مربوطه داشته باشه که خدارو شکر تمام عزیزانی که در اینجا تشریف دارند از من تجربشون بیشتر هست...) این هست که توی محدوده صحبتهای ما بحث تعریف Local Variable ها بصورت Implicit هیچ ارتباطی با بحث چندریختی نداره.
خواهش میکنم ازتون منظورتون هر چی که هست، حداقل در مورد این نکته بالا دوباره مثالی نزنید که منجر به این بشه که با بخواید خواننده رو متوجه منظورتون که چیز دیگه ای بوده بکنید...


اگر شما نفهمیدی دلیلی نداره بقیه نفهمن.همینجا از هر دوست عزیزی که منظور شما رو متوجه شده خواهش میکنم من رو هم تفهیم کنن، چون شدیدا فکر میکنم که فرمایشات اخیرتون تماما مغلطه (البته بهمراه یک سری مثالهای بی مورد) هست.
و فقط میتونم بگم خیلی به خودم مسلط بودم که مثل شما "شر و ور" رو بعنوان پاسخ به طرف مقابلم ندادم.
مونده تا ببینیم بقیه دوستان چه فکری میکنن...

sonixax
شنبه 11 دی 1389, 01:06 صبح
سلام به همه
من یک گیری دارم
میخواستم بدونم که وقتی که روی یک Button کلیک میکنیم چه طوری سیستم میفهمه که باید چی رو اجرا کنه - خلاصه نشستم سورس برنامه رو خوندم و متوجه شدم که از کلاس Button و نیم اسپیس System.Windows.Forms یک شیئ میسازه .
و مشخصاتش رو پایین تر تنظیم میکنه ، مشخصاتی مثل اندازه و رنگ و نوشته و اسم و مکان و ...
دست آخر هم میاد

this.MyButton.Click += new System.EventHandler(this.MyButton_Click);

به این صورت رویداد رو تنظیم میکنه و بعد شیئ ساخته شده رو با یک شیئ از EventHandler میچسبونه به هم که فکر میکنم همون ارث بری باشه چون هنوز به اونجاها نرسیدم که بعد از کلیک چه متدی باید اجرا بشه .
اینکه باز خود اون کلاس چه طوری کار میکنه و رویداد کلیک چه طوری حالی برنامه میشه برام مهمه ولی فعلا نیازی ندارم بدونم در آینده حتما ازتون سوال میکنم .
ولی سوالم اینه :
تا جایی که من فهمیدم قبل از تعریف یک متغیر یا شیئ در C# حتما باید نوعش رو تعریف کنیم ولی توی کدهایی که C# خودش تولید کرده نوع شیئ تولید شده رو مشخص نکرده و فقط با کلمه کلیدی This که اشاره به کلاس فعلی میکنه یک شیئ تعریف کرده .

this.MyButton = new System.Windows.Forms.Button();

حالا جنس این شیئ ساخته شده چی هست ؟ اصلا همونجا که با This شروع شده تعریفش کرده یا جای دیگه که از چشم من دور مونده ؟

پیشاپیش ممنون

abbas.oveissi
شنبه 11 دی 1389, 01:22 صبح
سلام به همه
من یک گیری دارم


دوست عزیز من متن سوالت رو کامل نخوندم (آخه دیگه آخر شب هس دارم از خواب میمیرم :لبخند: ) ، اما حدس میزنم سوالت برای event ها باشه . برو لینک زیر به مطلب داره در مورد event ها :
سایت cslearning (http://cslearning.tripod.com/cs/compCs_3_1.htm)


--------------------------------------------------------------------------------------------------------------------------------

خب ببین اون آخر کلاس توی form1.designer.cs تعریف کرده دیگه ، مثلا دکمه connect که من رو فرم ساختم اینو خودش تو کد هاش ساخته :


private System.Windows.Forms.Button connect;


بعد با این this بهش اشاره کرده :



this.connect = new System.Windows.Forms.Button();

sonixax
شنبه 11 دی 1389, 01:27 صبح
دوست عزیز من متن سوالت رو کامل نخوندم (آخه دیگه آخر شب هس دارم از خواب میمیرم :لبخند: ) ، اما حدس میزنم سوالت برای event ها باشه . برو لینک زیر به مطلب داره در مورد event ها :
سایت cslearning (http://cslearning.tripod.com/cs/compCs_3_1.htm)

راستش در مورد Event ها هم هست ، ولی خود سوال چیز دیگه ای هست ، اگر زحمتی نیست براتون فردا یک نگاهی بهش بندازید :خجالت:

abbas.oveissi
شنبه 11 دی 1389, 01:47 صبح
راستش در مورد Event ها هم هست ، ولی خود سوال چیز دیگه ای هست ، اگر زحمتی نیست براتون فردا یک نگاهی بهش بندازید :خجالت:

مگه این نبود جواب سوالت که دوباره آخر پست قبلی دادم درست نبود :

خب ببین اون آخره کلاس توی form1.designer.cs تعریف کرده دیگه ، مثلا دکمه connect که من رو فرم ساختم اینو خودش تو کد هاش ساخته :


private System.Windows.Forms.Button connect;


بعد با این this بهش اشاره کرده :



this.connect = new System.Windows.Forms.Button();

sonixax
شنبه 11 دی 1389, 04:25 صبح
مگه این نبود جواب سوالت که دوباره آخر پست قبلی دادم درست نبود :

خب ببین اون آخره کلاس توی form1.designer.cs تعریف کرده دیگه ، مثلا دکمه connect که من رو فرم ساختم اینو خودش تو کد هاش ساخته :


private System.Windows.Forms.Button connect;


بعد با این this بهش اشاره کرده :



this.connect = new System.Windows.Forms.Button();

آها آره پیدا کردم ، پس تکلیفم با جنسشون هم روشن شد ، ولی چرا آخرش تعریف کرده ؟ آدم هنگ میکنه :لبخند:

abbas.oveissi
شنبه 11 دی 1389, 10:34 صبح
آها آره پیدا کردم ، پس تکلیفم با جنسشون هم روشن شد ، ولی چرا آخرش تعریف کرده ؟ آدم هنگ میکنه :لبخند:

تویه یه فروم خارجی،یکی این جواب رو به سوالت داده بود :



In C++, it makes sense to put the public interface of the class at the top, so that any user of the class can open up your header file and quickly see what's available. By implication, protected and private members are put at the bottom.

In C# and Java, where interface and implementation are completely intertwined, people would probably not open your class's source code to see what's available. Instead they would rely on code completion or generated documentation. In that case, the ordering of the class members is irrelevant.

دروغ چرا من خودم چیز زیادی نفهمیدم،گذاشتم شاید خودت بهتر بفهمی منظورش چیه

mmd2009
شنبه 11 دی 1389, 11:17 صبح
نه دوست من لازم نیست دوباره وقت بزارید و توجیهم کنید، چون تجربه نشون داده که بحث باز الکی ادامه پیدا میکنه.
من که در آخر منظور شما رو نفهمیدم (البته میتونم بگم تغریبا مطمعن هستم که با این تفاسیر خودتون هم متوجه منظورتون نیستید یا منظورتون متناسب با شرایط تغییر میکنه!)، ولی تمام سعی من روی این هست که چیز بی ربطی به عنوان پاسخ به سوالی داده نشه.
مثلا یکی از چیزهایی که بدیها بی ربط هست (از نظر هر برنامه نویسی #C ای که حداقل اندک تجربیاتی در زمینه های مربوطه داشته باشه که خدارو شکر تمام عزیزانی که در اینجا تشریف دارند از من تجربشون بیشتر هست...) این هست که توی محدوده صحبتهای ما بحث تعریف Local Variable ها بصورت Implicit هیچ ارتباطی با بحث چندریختی نداره.
خواهش میکنم ازتون منظورتون هر چی که هست، حداقل در مورد این نکته بالا دوباره مثالی نزنید که منجر به این بشه که با بخواید خواننده رو متوجه منظورتون که چیز دیگه ای بوده بکنید...

همینجا از هر دوست عزیزی که منظور شما رو متوجه شده خواهش میکنم من رو هم تفهیم کنن، چون شدیدا فکر میکنم که فرمایشات اخیرتون تماما مغلطه (البته بهمراه یک سری مثالهای بی مورد) هست.
و فقط میتونم بگم خیلی به خودم مسلط بودم که مثل شما "شر و ور" رو بعنوان پاسخ به طرف مقابلم ندادم.
مونده تا ببینیم بقیه دوستان چه فکری میکنن...

*
**
:قهقهه:
**
*

امیدوارم خدا راه راست رو به سمت تو کج کنه. هر چی دوست داری میگی بعدش میگی من شرو ور میگم :تشویق:

sonixax
چهارشنبه 22 دی 1389, 04:30 صبح
دوستان گرامی بی زحمت به طوری که آدم حسابی شیرفَهم (همون خَرفَهمِ خودمون) بشه توضیح بدید wpf چیست ؟

با سپاس .

kazemproger
یک شنبه 17 بهمن 1389, 23:23 عصر
سلام به دوستان
من می خوام توی ویژوال استودیو یک بانک اطلاعاتی ایجاد کنم ولی خطا میده.

66043
لطفا راهنمایی کنید با تشکر...

saman2
شنبه 28 اسفند 1389, 22:47 عصر
با سلام.
البته من تازه وارد نيستم، اما احتمالا سئوالم ابتدايي باشه!
سئوال من اينه كه :

1) تفاوت آيكونها با دو شكل: نماد ويژوال استوديو و نماد سي شارپ در كادر start page در VS چيه؟
ببخشيد كنجكاويه ديگه! اميدوارم منظورم رو متوجه شده باشيد.

melika_it
شنبه 28 اسفند 1389, 23:34 عصر
سلام من ی تازه واردم تو دنیای c#
استادمون ی پروژه داده در مورد گرافیک در سی شارپ ،وقت زیادی هم ندارم ،میشه یه منبعی به من معرفی و واسم میل کنید وقتم خیلی کمِ و اصلا با این محیط آشنایی ندارم،الان مثل این میمونه که ی کلاف سر در گم رو دستم گرفته باشم ،ممنون میشم راهنماییم کنید
s.sahel10@yahoo.com

AlgorithmX
یک شنبه 29 اسفند 1389, 12:18 عصر
با سلام.
البته من تازه وارد نيستم، اما احتمالا سئوالم ابتدايي باشه!
سئوال من اينه كه :

1) تفاوت آيكونها با دو شكل: نماد ويژوال استوديو و نماد سي شارپ در كادر start page در VS چيه؟
ببخشيد كنجكاويه ديگه! اميدوارم منظورم رو متوجه شده باشيد.


امیدوارم بقیه منظور شمارو فهمیده باشن ، اما من نفهمیدم (یعنی پیداش نکردم این دوشکل رو!) اگه میشه عکسشو بزار!

AlgorithmX
یک شنبه 29 اسفند 1389, 12:34 عصر
دوستان گرامی بی زحمت به طوری که آدم حسابی شیرفَهم (همون خَرفَهمِ خودمون) بشه توضیح بدید wpf چیست ؟

با سپاس .

من باهاش کار کردم (نه حرفه ای!) ولی جالبه که مانند Windows Form Application خروجی اجرایی میده (exe) و برای اجرا نیاز به Framework داره!
فکر کنم برای صفحات وب هم بکار بره چون میتونه شبیه به Silverlight رابط گرافیکی قدرتمندی تحویل بده!
اگر کسی سوال دوست ما پاسخ بده مشکل خیلی ها برای درک اصل WPF حل میشه!!

در پایین یک پروژه مرورگر وب با WPF گذاشتم (به دردبخوره!)

epsi1on
یک شنبه 29 اسفند 1389, 15:12 عصر
اگر کسی سوال دوست ما پاسخ بده مشکل خیلی ها برای درک اصل WPF حل میشه!!

سلام دوست من.
فکر میکنم برای این سوال پاسخی توی این تاپیک (http://barnamenevis.org/showthread.php?102127-) بگیرید (مخصوصا پستهای 4-5-6-7 و ادامشون)

saman2
سه شنبه 02 فروردین 1390, 02:42 صبح
امیدوارم بقیه منظور شمارو فهمیده باشن ، اما من نفهمیدم (یعنی پیداش نکردم این دوشکل رو!) اگه میشه عکسشو بزار!

فكر ميكنم اگه يه كم بيشتر توضيح بدم نيازي به عكس هم نباشه: ببينيد توي صفحه start page وقتي ميخوايد وارد يه سلوشن توي سي شارپ بشيد، توي قسمت Recent Projects كنار اسم هر سولوشن يك آيكون هست. اگه با دقت به درون آيكونها نگاه كنيد يك نماد كوچك هم داخلشون هست. اين نماد يا سمبل VS هست و يا سمبل #‍‍C. توي ليست سلوشن هاي من هر دوي اين نمادها بچشم ميخوره، در حاليكه بنظر من سلوشن ها تفاوت خاصي با هم ندارن و همشون فايلهاي سي شارپ هستن.
ميخواستم ببينم براي دوستان هم متفاوته؟ و اطلاع داريد كه دليل اين تفاوت چيه؟ (ضمنا نسخه كامپايلر من 2005 است).

saman2
پنج شنبه 04 فروردین 1390, 01:36 صبح
انگار دوستان بدجوري با عيد مشغولن! چون خبري از پاسخ به سئوال قبليم نيست...
علاوه بر اون ميخوام يك سئوال ديگه هم اضافه كنم كه دوستان لطف كنن و به هر دوش پاسخ بدن:
ميخواستم بدونم تفاوت Overloading با Overriding چيه؟ البته خودم يه چيزايي مي دونم اما چون يه شباهتايي بهم دارن بعضي موارد مفاهيم رو قاطي مي كنم. اگه طوري بتونيد اين مفاهيم رو از هم جدا كنيد كه ديگه اين تداخل معنايي بوجود نياد خيلي خوبه...

Amir Oveisi
پنج شنبه 04 فروردین 1390, 17:59 عصر
کاربران محترم توصیه میکنم قبل از طرح هر گونه سوالی در این تاپیک و در این سایت و هر سایت دیگری، و در کل قبل از شروع کردن به برنامه نویسی، مطالعه کنید تا حداقل ها رو درست متوجه شده باشید. در غیر اینصورت تمام تلاشتون مثال آب در هاون کوبیدن خواهد بود.
با بررسی تک تک پست های این تاپیک به این نتیجه رسیدم که اکثر دوستان حداقل ها رو به خوبی متوجه نشدند و این خیلی برام عجیب بود!
لطفا این توصیه رو جدی بگیرید تا از اتلاف وقت و انرژی تون جلوگیری کرده باشید.
لازم به ذکر است که در صورت ادامه همین روند در این تاپیک، تاپیک قفل خواهد شد. بنابراین ، بدون مطالعه و علم سوال مطرح نکنید و پاسخ ندهید.

با تشکر

AlgorithmX
جمعه 05 فروردین 1390, 12:52 عصر
فکر کنم بهتر باشه سوالات مرتبط با WPF رو در تالار WPF (http://barnamenevis.org/forumdisplay.php?142-WPF) مطرح بشه! (:لبخند:)

shanb3h
جمعه 05 فروردین 1390, 13:40 عصر
سلام ! امیدوارم سئوالم تکراری نباشه ! من واقعاً به برنامه نویسی علاقه دارم ! فقط به عنوان یه سرگرمی بهش نگاه نمیکنم و دوست دارم به عنوان یه شغل برام باشه ! با اینکه دانشجوی مدیریت هستم !
میخواستم چندتا کتاب بهم معرفی کنین ! در ضمن من به شخصه دوست دارم خودم یاد بگیرم و به کلاس نرم اما به نظرتون به کلاس هم نیازی هست ؟!
ممنونم

saman2
یک شنبه 07 فروردین 1390, 02:11 صبح
کاربران محترم توصیه میکنم قبل از طرح هر گونه سوالی در این تاپیک و در این سایت و هر سایت دیگری، و در کل قبل از شروع کردن به برنامه نویسی، مطالعه کنید تا حداقل ها رو درست متوجه شده باشید. در غیر اینصورت تمام تلاشتون مثال آب در هاون کوبیدن خواهد بود.
با بررسی تک تک پست های این تاپیک به این نتیجه رسیدم که اکثر دوستان حداقل ها رو به خوبی متوجه نشدند و این خیلی برام عجیب بود!
لطفا این توصیه رو جدی بگیرید تا از اتلاف وقت و انرژی تون جلوگیری کرده باشید.
لازم به ذکر است که در صورت ادامه همین روند در این تاپیک، تاپیک قفل خواهد شد. بنابراین ، بدون مطالعه و علم سوال مطرح نکنید و پاسخ ندهید.

با تشکر
ميشه لطف كنيد مثالي بزنيد تا منظورتون واضحتر بشه؟ منظورتون از حداقلها كمي گنگ بود... البته بايد بطور كلي خدمتتون عرض كنم كه انسان جائز يا ممكن الخطاست و حتي ممكنه يك برنامه نويس ماهر و باسابقه هم گاهي اشتباهات عجيبي رو مرتكب بشه و البته توي دنياي بشدت پويا و بزرگ برنامه نويسي اين شايد خيلي هم غيرطبيعي نباشه. اين نظر شخصي منه...

ztx4
یک شنبه 07 فروردین 1390, 03:15 صبح
عجب آشفته بازاری شده این تاپیک
متعجبم چرا تا الان قفل نشده!

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

این توصیه ی منه.سعی کنید اول مطالعه کنید،بعد اگر مشکلی بود توی گوگل جستجو کنید،اگر به جواب نرسیدید تو این سایت جستجو کنید اگر باز هم موفق نشدید،سوالتون رو توی تاپیک های جدا مطرح کنید تا زود تر به جواب برسید.

پیروز باشید

Amir Oveisi
یک شنبه 07 فروردین 1390, 03:40 صبح
تاپیک قفل شد
لطفا سوالات خود را پس از مطالعه دقیق و کامل قوانین سایت، در تاپیک های جداگانه مطرح نمایید.
روشن است که پست های جدید ایجاد شده، در صورت نقض قوانین، حذف خواهند شد.

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

موفق باشید