کلمه ی NEW تفاوت Dim و Private -عزیزان کمک کنید

AliHSlc

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

لطفا در مورد متدهای سازنده توضیح بدید! مثلا :
Public Sub New()i
end sub
در مورد این خط هم توضیح بدید که چه طور تشریح میشه!
Dim time As New CTime()i
درواقعCTime یک کلاس هستش که تعریف کردیم!
والا من هرچی فکر می کنم که چیکار میکنه این خط چیزی متوجه نشدم!
راستش با کلمه NEW کلا مشکل دارم...
در مورد تفاوت این دو خط هم توضیح بدید
Dim A as Integer
Private A as Integer
راهنمایی کنید... ممنون میشم
در ضمن خدمت جناب مدیر هم عرض کنم که به نظر بنده اگر به جای زدن این تاپیک این سوال رو توی سوال در مورد وی-بی دات نت و وی-بی مطرح می کردم... بهتر بود.... ولی چون شما خواستید تاپیک زدم
حق نگهدارتون
 

AliHSlc

Member
حالا که هنوز زحمت نکشیدید جواب بدید.... یه چیز دیگه هم بپرسم.... آیا نمونه سازی هم مربوط به همین کلمه New میشه؟
 

MnavidM

Active Member
سلام.

والا توضیح یه مقدار طولانی هست.

اما یه توضیح کوچیک بدم خدمتتون :

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

یعنی در کل استفاده New برای مباحث شی گرایی هست.

مثلا وقتی شما یه کامپوننت داری که می خوای یه نمونه ازش تعریف کنی و ازش استفاده کنی ، از دستور New استفاده می کنی .

البته این در زمانی هست که شما ، توسط کد اون کامپوننت رو ایجا کنید ، وگرنه مثلا با Drog & Drop اون رو روی فرم بکشید ، خود اون زبان برنامه نویسی ، کار های لازم رو انجام میده.

حالا مثلا تو زبان C# همه چیز شی هست ، برای همین مثلا وقتی شما حتی می خواید یک متغیر تعریف کنید ، چون اون متغیر هم خودش شی هست ، می تونید از دستور New برای ایجاد اون استفاده کنید .

مثلا :
کد:
int myint1;
myint = new int;

کد بالا ، در خط اول یک اسم برای یک متغیر از نوع int انتخاب می کنه ، به اسم myint1 .

و بعد در خط دوم میاد میگه به مقدار فضایی که متغیر int حافظه اشغال میکنه ، به اون متغیر حافظه بده .

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

موفق باشید.
نوید.
 

AliHSlc

Member
حاج نوید دستت درد نکنه!
ممکنه در مورد تفاوت متغیری که با Private تعریف میشه و متغیری که با Dim تعریف میشه رو بگی؟
در مورد خط زیر هم یه راهنمایی بکنی که خیلی آقایی کردی
Dim VAR As integer = new integer
ممنون میشم!
 

Old User

Member
کد:
Public Sub New()
 ' This call is required by the Windows Form Designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call.
 End Sub



Dim A as Integer
اين متغيير فقط داخل همون تابعي که تعريف مي شه قابل فراخوانيه...

Private A as Integer
اين متغير به صورت سراسري تعريف ميشهو در تمام توابع همون فرم قابل استفادست...

Public A as Integer
اين متغيير هم مثل متغييري که از نوع پريويت تعريف شده ، هستش با اين تفاوت که ميتونی در کل پروژه از اين نوع متغيير استفاده کنی به عنوان مثال اگر شما دو فرم به نامهاي فرم 1 و فرم2 داشته باشي و در فرم1 متغييري از نوع پابليک تعريف کنيد مي تونيد در فرم2 با استفاده از کد زير مقدار متغيير را دريافت کنیدوتغيير دهيد يا ازش استفاده کنيد:
form1.A

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

Dim VAR As Integer = New Integer
و
Dim VAR As New Integer
Dim VAR As Integer


آقا نوید اگه جاییش اشتباهه بگید تا منم بدونم ...تشکر
 

AliHSlc

Member
Old User عزیز دل جدا که دستت درد نکنه! در مورد متغیر ها به قول بچه ها گفتنی تا آخرش ر فهمیدم!
اما در مورد سوال آخرم هنوز گیر دارم.... نمی دونم اون خط یعنی چی؟
آخه چرا باید برای نوع اینتیجر از کلمه ی New استفاده کرد.... آخه کلاس نیست که بخوایم ازش نمونه سازی کینم!

به هرحال خیلی ممنون!:oops:
 

Old User

Member
در مورد متغیر ها به قول بچه ها گفتنی تا آخرش ر فهمیدم!

فهمیدیش چون خودت پیش زمینه داری و بلدی :wink:

خه چرا باید برای نوع اینتیجر از کلمه ی New استفاده کرد.... آخه کلاس نیست که بخوایم ازش نمونه سازی کینم!

والا چی بگم ، چه با New وچه بیNew این دوتا خط یکیه !!!!!!! نمیدونم اصلا اونجا چیکار میکنه ولی حتما برات میپرسم وبهت اطلاع میدم.
 
آخرین ویرایش:

Old User

Member
:)
من تست کردم باز، فکر کنم فرقش این باشه که :

Dim a As Intege اگه اینجوری تعریف شه و از متغییر استفاده نشه پیغام خطا میده ...

Dim b As New Integer اینجوری اگه تعریف بشه مهم نیست که ازش استفاده کنی تو برنامت یا نه ... احتمالا مقدار اولیه بهش میده ...

همینه دیگه نه ؟! :neutral:
 

AliHSlc

Member
سلام.... الد یوزر جان.... مدونم باز کار خودته!
یه زحمت بکش!:oops:

آقا ما خارج از همه ی متدهای یک کلاس اگر متغیری با DIM یا Private تعریف کنیم! تفاوتشون چی میشه؟

راستی تفاوت متغیر های سرارسی Shared محلی Shared چیه؟
اگه اشتراکیه دیگه محلی و سراسری بودنش دیگه چه صیغه اییه؟:mad:

یا علی
 

Old User

Member
خارج از همه ی متدهای یک کلاس اگر متغیری با DIM یا Private تعریف کنیم! تفاوتشون چی میشه؟


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


راستی تفاوت متغیر های سرارسی Shared محلی Shared چیه؟
اگه اشتراکیه دیگه محلی و سراسری بودنش دیگه چه صیغه اییه؟

shared??
میشه لطفا نحوه تعریف این نوع متغییر رو بگی... یه نمونه کد از اینم برام بزار یا خوب توضیح بده تا بتونم بهت جواب دقیق و کامل بدم ... :)

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

AliHSlc

Member
Public Class Class1

Private Var1 As Integer
Dim var2 As Integer

Public Shared Var3 As Integer
Private Shared var4 As Integer

Sub main()

Dim var1 As Integer

End Sub

End Class

عزیز جان...این کد رو دقیقا خودم توی محیط نوشتم بعدش کپی کردم اینجا!

دو متغیر اول که تعریف میشه.... داخل هیچ متدی نیستش. و درواقع متغیر عضو (اسم فارسیش این میشه (احتمالا)) هستند. ولی توی متد main متغیر Var1 محلیه! و نمیشه با کلمه ی Private تعریف بشه! ولی خارج از متد میشه هم با کلمه ی Dim و هم با PRivate تعریف کرد! فرقشون هم نمیدونم چیه!

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

حالا اون موضوع به کنار که من نتونستم باهاش کار کنم.... اگر واقعا اشتراکی باشه دیگه فرقی نمی کنه که محلی باشه یا پابلیک ! چون باز هم توی همه ای پروژه باید قابل دسترس باشه!
حالا شما استاد جون یه راهنمایی بکن مارو!:oops:
یا علی
 

Old User

Member
احتمالا Dim وقتی بیرون از Main تعریف میشه دیگه داخل خود Main قابل دسترس نیست... درواقع یک متغییر محلی واسه کلاسمونه.

Private رو نمیتونی داخل Main تعریف کنی چون برای تعریف متغییر سراسریه و قبلنم برات توضیح دادم فرق سه نوع متغییر رو ...

این متغییر Shared یعنی چه با پابلیک تعریف شه چه با پریویت بازم تو کل فرمهات قابل استفادست؟؟ منظورت از پروژه یعنی چندین فرمه ؟؟

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

حالا شما استاد جون یه راهنمایی بکن مارو!

:mrgreen: نگو استاد یادم به آرتروز گردن میفتههههههه ... :D

بی شوخی حالا، بابا من چیزی بلد نیستم که همش تست میکنم خودتم راحت میتونی این کار وبکنی فقط باید وقت و حوصله به خرج بدی... :wink:

موفق باشی.
 

Old User

Member
کد:
 Private Var1 As Integer
Dim var2 As Integer

این دو خط که بیرون از Main تعریف شده هیچ فرقی نداره یعنی تو کل کلاس جفتشو میشناسه حالا نمیدونم از لحاظ ساختار درونی چه فرقی دارن!

کد:
 Public Shared Var3 As Integer
Private Shared var4 As Integer

من اینو تست کردم ... وقتی با Public تعریف کردم تو همه فرمها میشناسه اما باید اسم Form1 رو که تعریفش کردیم بیاریم یعنی به خودیه خود نمیشناستش ... ولی با Private فقط تو فرم یک میشناسه ... شما چه جوری میگید فرقی نداره؟!


کد:
 Sub main()

Dim var1 As Integer

End Sub

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

:) موفق باشید...
 

AliHSlc

Member
آقا دستت درد نکنه..خیلی سالاری به خدا...:oops:

امروز داشتم با یه مهندسی صحبت می کردم.... طرف خیلی مخه! به قول معروف اند شبکست(شبکه است):cool:
از فلان دانشگاه معروف هم فارغ التحصیل شده...دردسرت نرم... حرفش برو داه پیش 4 نفر دیگه!

از من پرسید فلانی تو زمینه فعالیتت چیه؟ گفتم دارم وی-بی دات نت میخونم!
گفت شبکه داری کار میکنی؟
گفتم نه!
گفت : پس چرا داری دات نت میخونی؟ بدون شبکه دات نت بودنش به دردت نمی خوره!
یه خورده که به دقت مگاه کردم دیدم همچی پر بیراه نمیگیه! (البته تئوری شبکه یه چیزایی بلتم (بلدم))

گفتم یه مشورتی با پیشکسوتان (Old User ha ) بکنیم...ببینیم نظر این بزرگان در این وادی چیه؟:wink:

ممنون از کمک هات عزیز دل برادر!
موفق و پیروز باشی انشالله!
 

Old User

Member
اتفاقا شبکه خیلی عالیه ... ولی اینطورم نیست که ایشون فرمودن:

گفت : پس چرا داری دات نت میخونی؟ بدون شبکه دات نت بودنش به دردت نمی خوره!

میدونی شبکه خیلی طرفدار داره چون کمتر کسی وارده و متحصصه ، اگرم بخوای بری تو کارش باید بری و برنگردی :mrgreen: یعنی باید حسابی حرفه ای بشی چون درحد پایین کاری از پیش نمیبری... اگر در توان خودت میبینی بنظرمنم عالیه حرف نداره !!

ولی اینم بدون هر کی هر تخصصی داره از تخصص خودش و حرفه خودش دفاع میکنه :cool: ... اگر بخوای به حرف هر مخی :mrgreen: گوش بدی هی باید از این شاخه به اون شاخه بپری بالاخره هر کسی به یه چیزی علاقه داره!!

من پیشکسوت نیستم :neutral: من فقط چون تو سی و پاسکال حسابی رسمونو کشیدن بعضی ریزه کاریایه برنامه نویسی رو بلدم...

شماهم موفق باشی :)
 

جدیدترین ارسال ها

بالا