SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
اینکه حافظه جدیدی تخصیص داده بشه یا نشه به نحوه پیاده سازی زبان و بخش عملگر انتساب ( = ) مربوطه، ربطی به new که یک کلمه کلیدی زبان ئه نداره.
توضیحات عملگر new رو بخونید، ببینید داخلش صحبتی در مورد حافظه جدید شده یا نه. اگر نشده پس ربطی به حافظه جدید نداره.
فرض کنید که i = 4 + 5 رو دارید، 5 در یک حافظه مجزا است، 4 در یک حافظه مجزا، 4 + 5 در یک حافظه دیگه محاسبه میشه و عملگر = این مقدار رو در حافظه i کپی می کنه. حالا اینکه در سمت راست = ئه new ای بوده یا نبوده و چه تعدادی حافظه مجزا بوده که ربطی به عملکرد عملگر انتساب و کاری که با مقدار i و حافظه اش می کنه نداره.new operator - Create and initialize a new instance of a type - C# reference
The C# new operator is used to create a optionally initialize a new instance of a type.docs.microsoft.com
خیلی ممنون استاد .
راستی استاد ، قبلا که میگفتید که آدرس حافظه ، جابجا میشه ، این کار GC در دات نت بود دیگه . درسته؟
یا کار سیستم عامل بود؟
اما از دید پروسه ، این تغییر آدرس ، پنهان میموند و پروسه ، یه آدرس نسبی ، نسبت به page هایی که براش در نظر گرفته شده بود را داره و بنابراین این تغییر آدرس را متوجه نمیشه . درسته؟
و اینکه استاد ، در .net core ، الان خیلی از کتابخونه هایی که در دات نت فریم وورک هست ، در اونجا هم هست . مثلا ComboBox ئه wpf ، در دات نت کور 3 هم هست . این به این معنا هست که در سیستم عامل های دیگه (مثل اندروید یا مکینتاش) هم میتونیم از این کتابخونه های دات نت کور (مثل همین کمبوباکس) استفاده کنیم؟
یا اینکه مثل قضیه ی استفاده از کتابخونه های رجیستری در دات نت کور هست که قبلا درباره ی دات نت کور گفتید (که چون رجیستری ، فقط در ویندوز وجود داره ، پس با استفاده از این کتابخونه ، اون برنامه ای که از دات نت کور استفاده میکنه ، دیگه با سیستم عامل های دیگه ، سازگار نیست) .
Kernel32.dll توابع هسته سیستم عامل نیست، شامل یکسری توابع اساسی است که برنامه های سطح کاربری ویندوز ازش استفاده می کنند.
و در کل برنامه ای در سطح کاربر نمی تونه از هسته سیستم عامل سرویسی بگیره که نیاز به دسترسی سطح هسته داره.
این توابع و هدرهایی که نام میبره ، مربوط به هسته ی سیستم عامل ویندوز هستن . درسته؟ :
سرویس هایی که شما بخواهید در سطح کاربری دریافت کنید به همون شکل هم نقض شدنی هستند :
WhatSoftware Blog
WhatSoftware, a daily updated Tech Blog with basic and advanced, unbiased software reviews, computer tips news and more!www.raymond.cc
آها . یعنی یه برنامه یا یه شخصی با دسترسی admin هم میتونه کاری کنه که این دسترسِ برنامه مون به درایوری که کتابخونه یا سرویس اش که توسط برنامه نویس ++C انجام شد و ما در برنامه ی سی شارپ مون در سطح دسترسی admin ، بهش دسترسی داریم را منع کنه؟
البته باز هم این اش برای بعضی از برنامه هام ، شاید مهم نباشه .
منطق استدلال تون رو متوجه نشدم ولی در چه موضوعی تردید دارید؟ در اینکه ++C برای نوشتن نرم افزار سطح هسته و ارتباط سطح پایین با سخت افزار قابل استفاده است؟ یا اینکه #C این توانایی ها رو نداره؟ اگر از زبان ++C شناخت کافی نداشته باشید که جایی برای بحث و گفتگو نیست.
بله.
خیر.
از نظر فنی #C نمیتونه همچین کاری رو انجام بده. می توانید واسط کاربری برنامه رو با #C طراحی کنید اما بدون استفاده از یک سرویس سیستمی که خودش به زبان #C قابل پیاده سازی نیست کار نخواهد کرد.
اینکه سی شارپ چرا این توانایی را نداره؟
غیر از اینه که برنامه نویس های ++C ، وقتی میخوان درایور بسازن ، از هِدِر ها و فایل ها و کتابخونه هایی که هسته ی سیستم عامل ویندوز (در اون لینک بالا) که در اختیارشون میذاره استفاده و فراخونی میکنن و در واقع متدهای پایه را خودشون از اول نمینویسن؟
اگه آره ، خوب سی شارپ هم قابلییت فراخونی خیلی از متدها و کلا اعضایی که ++C قابلیت فراخونی شونو داره ، داره دیگه .
پس چرا با سی شارپ نمیشه برنامه ی سطح درایور ساخت؟
یا اینکه میشه اما قابلیت های سی شارپ (مثلا بخاطر اینکه توانایی این رو نداره که بعضی از اعضایی که ++C میتونه فراخونی شون کنه ، اون سی شارپ نمیتونه) ، در ساخت درایور ، کمتره؟
همچنین تشکر از بقیه ی جواب هاتون