برنامه نویسان که پیر دیر هستند کسی هست که بدونه قضیه static در زبان C چی بوده
سوال من اینه که چه طوری میشه متغییری که استاتیک تعریف میشود در C را در زبان #C پیاده سازی کرد
برنامه نویسان که پیر دیر هستند کسی هست که بدونه قضیه static در زبان C چی بوده
سوال من اینه که چه طوری میشه متغییری که استاتیک تعریف میشود در C را در زبان #C پیاده سازی کرد
https://barnamenevis.org/showpo...53&postcount=3
private static Form1 _coreForm;
من هنوز جواب نگرفتم
لطفا زیر دیپلم صحبت کنید
برنامهنویسی بالا و پائین دیپلم نداره، مگر طرز تعریف یک متغییر استاتیک را در سیشارپ نخواستید؟ اصلا با کد کار کردید؟ برایه نیم خط کد که نمیشه ساده تر نوشت؟ بیزحمت وقتی که میگید جواب نگرفتید یک و یا دوخط ("دوخت" بود تصحیح شد ، با تشکر از night_fall2) هم مرحمت کنید که از چه لحاظ مشکل دارید.
هر چی سوال را دقیقتر توظیح بدید بقیه هم میتوانند جواب دقیقتر بدهند.
من منظورم از متغییر استاتیک این بود که وقتی یک کلاس استاتیک دارم و در داخل اون کلاس استاتیک متدی استاتیک تعریف میکنم و در داخل اون متد متغییری رو تعریف میکنم
int i = 10;
و بعد توی اون متد مقدار متغییر i رو دو واحد افضایش میدم .
در مرحله بعدی که متد استاتیک تعریف شده از کلاس استاتیک رو صدا میزنم مجدد مقدار متغییر i مساوی 10 نشود و این بار از همان اول مقدار متغییر i مساوی 12 باشد و بعد اضافه شدن اون دو واحد مقدار i مساوی 14 بشه
اگه کسی با زبان C آشنا باشه منظور منو خوب میفهمه
خوب چرا این متغییر را خارج متد تعریف نمیکنید؟
در ضمن سعی نکنید همه چی را همان طور که در سی باهاش کار میکردید کار کنید. مفاهیم سی شارپ را یاد بگیرید و مستقیما با روشهایه سی شارپ کار کنید زندگی آسان تر میشه.
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
دوست عزیز چنین چیزی در سی شارپ امکان پذیر نیست... ولی در VB.NET امکان پذیره.نوشته شده توسط alireza_tavakol
متاسفانه من باور نمی کنم که زبان #C از انجام این کار عاجز باشد در صورتی که جد بزرگوارش توان انجام این کار را داشته باشد
در ثانی اگر امکان انجام این کار مهال است علت چیست آیا دلیل منطقی خاصی وجود دارد؟
ثالثا چرا VB.NET می تواند انجام دهد وای #C نمی تواند این دو زبان که توسط یک شرکت و توسط یک IDE و با هسته ای یکسان هستند
جناب آقای ارژنگ خان من هر وقت مثالی عرض میکنم شما سریع یه نسخه ای واسه مثال من می پیچید و لی مشکل رو حل نمی کنید البته سپاس گذارم از لطف شما ولی من سوالم شناسایی مفاهیم می باشد و برای درک بهتر مسئله مثالی عرض کردم
از نصیحت و توصیه جناب عالی بسیار متشکرمدر ضمن سعی نکنید همه چی را همان طور که در سی باهاش کار میکردید کار کنید. مفاهیم سی شارپ را یاد بگیرید و مستقیما با روشهایه سی شارپ کار کنید زندگی آسان تر میشه.
۱) سی یک زبان غیره قشیگراست، سی شارپ زبان شئی گراست، همانطوری که در https://barnamenevis.org/showthread.php?t=81358 گفتم طراحان سی شارپ صلاح ندیدند تمام خصوصیات سی را در سی شارپ داشته باشند. در ثانی در سی شارپ باید با مفاهیم شئی گرائیی کار کنید. تبدیل کد از سی کمله به کمله به سی شارپ کاره درستی نیست و بعضی مفاهیم از یک زبان به یک زبان دیگر قابل ترجمه نیستند (همانطوری که در زبان آدمیزاد هم نمیشه از یک زبان به یک زبان دیگر کلمه به کلمه ترجمه کرد )
همانطوری که در https://barnamenevis.org/showthread.php?t=81358 گفتم طراحان هر زبان هر چی را که صلاح نبینند ور میدارند.
امکان چه کاری مهال است؟ نوشتن برنامه نویسی غیره شئیگرا در یک زبان شئیگرا مفهوم و معنی ندارد. اگر به روش شئیگرا فکر کنید به راحتی میشه همان کار را انجام داد.
کدام مثال؟ اگر ممکن است جایی که کد را فرستادید را لینک بدید که درستش کنیم. برایه درک کردن مفاهیم بهترین کار کار کردن با کد است، من میتوانم کلی درباره مفاهیم که شما سوال میکنیدبنویسم ولی اگر کده بخصوصی را که مورد نظرتان هست را بفرستید میتوانید هم جواب دقیق بگیرید و هم نحوه استفاده مفاهیم شئیگرائی را هم ببینید.
در ضمن سوالهایتان بجاست، ولی باید قبول کنید که در دنیا هیچ چی کامل نیست، همه چی منطق ۱۰۰% درست ندارد. اینکه ویبی دات نت قابلیت چیزی را دارد و سی شارپ ندارد از حقیقت واقعیت چیزه بیشتری لازم نمیشه باشد. اگرچه منطقتان را درک میکنم ولی حقیقت چیزه دیگریست. میتوانید منطقا یک چیزی را قبول نداشته باشید ولی حقیقتا باید باهاش کنار بیاید.
اگر این کد مورد نظرتان را بفرستید به جایه خواندن فلسفه من یک جواب دقیقتر میگرید.
اگر ممکن است تا جایی که میوانید کدتان را در سی شارپ بنویسید و اینکه انتظار دارید در چه خطی چه اتفاق بیافتد را هم بفرستید.
من نمیخوام نصیحت کنم، ترجیح میدم مشکلتان رابا ۳ خط کد حل کنم تا اینکه ۲۰ خط انشا بنویسم :)
فرض کنیم که اگر چنین قابلیتی در سی# وجود داشت:در ثانی اگر امکان انجام این کار مهال است علت چیست آیا دلیل منطقی خاصی وجود دارد؟
class Simple
{
static int c00 = 0;
public void Goal()
{
static int c99 = 0;
c99++;
}
}
قبول دارید که زمان نابودی متغیر c99 برابر زمان نابودی متغیر c00 است؟
وجود متغیر c99 روی کلاس Simple تاثیر گذار است... در حالیکه کلاس Simple از وجود متغیر c99 بی اطلاع است! و این از نظر سی# بی معنا خواهد بود. برخلاف VB.NET و سی++، در سی# فقط میتوان بصورت شیئ گرا نوشت و غیر از آن امکان پذیر نیست (هر زبان برنامه نویسی یک هدف خاص رو دنبال میکنه).
متغیر c99 رفتاری شبیه به اشیاء نداره، چون مثلا وقتی شیئ x در محدوده A ایجاد میشود، به این معنی است که شیئ x در محدوده A زندگی میکند و محدوده A باید از وجود شیئ x مطلع باشه در غیر اینصورت چیزی فراتر از ماورای طبیعی اشیاء خواهد بود! (یعنی غیر قابل قبول!). در حال حاضر، شیئ c99 در محدوده کلاس Simple زندگی میکند ولی کلاس Simple از وجود آن اطلاعی نداره، پس از دیدگاه اشیاء، غیر قابل توجیه خواهد بود.
مثلا در نظر بگیرید که نمیدونید شما چهار تا دست دارید! (شما = کلاس Simple) (دو دست اضافی = شیئ c99)
به خدا حقت که بهت بگم خدای برنامه نویسی
این قدر کلمات و جملات منطقی و واضح است که زبان من قاصر از هر گونه تعریف می باشد
من قانع شودم و جواب خودم رو گرفتم
اما یه سوال جزیی این طوری که من از جواب و مثال شما برداشت کردم
++C و VB.NET دارن یه جورایی غیر منطقی عمل میکنند آیا شما هم صریحا به این نکته اعتقاد دارین
از اظهار لطفتون ممنونم :-)
چون سی++ و VB.NET اجازه نوشتن بصورت غیر شیئ گرا را میدهند، نمیتونیم بگیم که این زبانها غیر منطقی رفتار میکنند، چون نوشتن کد بصورت غیر شیئ گرا، جزئی از خصوصیات این زبانهاست. از این نظر درست میگید که اینکار غیر منطقی است اما از دیدگاه سی# غیر منطقی است ولی از دیدگاه سی و سی++، کاملا منطقی خواهد بود.
با توجه به اینکه، زبان سی اصولا شی گرا نیست پس استفاده از روشهای شیئ گرا نامفهوم خواهد بود و همچنین، این جزئی از خصوصیات سی++ است که بتوان برنامه نویسی غیر شی گرا را در کنار برنامه نویسی شی گرا انجام داد.
VB.NET هم از جدش الهام میگیرد که جدش Visual Basic است، که Visual Basic هم شیئ گرا نبوده است.
و چون سی# تازه متولد است، پس از همان اول فقط بر پایه اصول شی گرایی طراحی شده است. فکر کنم جاوا هم شیئ گرای خالص باشد مثل سی#... البته من با زبان جاوا آشنایی ندارم و از این گفته ام مطمئن نیستم و فقط آنرا شنیده ام :-)
با تشکر از کلیه دوستانی که در بحث مذکور شرکت کرده اند بخصوص PC2st.ir عزیز که جواب نهایی را داد
من موضوع را کامل درک کردم و به عمق فاجعه پی بردم و هیچ گونه پرسش در این زمینه ندارم
البته همان طور که جناب آقای ارژنگ خان فرمودند این موضوع از نظر کاربردی ارزشی نداشت ولی برای من از نظر مفهومی جالب بود
من یه کم جاوا بلدم و این کفته شما رو تایید میکنم ( البته من کیم که جمله شما رو تایید یا رد کنم )فکر کنم جاوا هم شیئ گرای خالص باشد