View Full Version : به نظر شما این کد چه مشکلی داره؟
Voldemort
یک شنبه 11 مرداد 1383, 06:57 صبح
به نظر شما این کد چه مشکلی داره؟
Dim oObj As New cSimpleClass
Set oObj = Nothing
If oObj Is Nothing Then
.
.
.
.
End If
jannati
یک شنبه 11 مرداد 1383, 07:57 صبح
به نظر من اشکالش اینه که شرط همواره اجرا میشه. :roll:
sunboy
یک شنبه 11 مرداد 1383, 10:25 صبح
من فکر کنم که cSimpleClass نشه مقدار Nothing ریخت
البته وی بی من پریده من توی وی بی تست نکردم حدس زدم
mr_esmaily
یک شنبه 11 مرداد 1383, 13:15 عصر
سلام
به نظر منم اشکال در شرطشه؟!
btu
دوشنبه 19 مرداد 1383, 09:11 صبح
اشکال برنامه استفاده از کلمهی new در تعریف متغیر است. با این تعریف دیگر مقدار قابل قبولی در متغیر ذخیره نمیشود. باید کلمهی new را برداشت و در یک سطر دیگر مقداردهی را با Set oObj = New cSimpleClass انجام داد.
Voldemort
دوشنبه 19 مرداد 1383, 10:41 صبح
در این کد ابتدا شی در VB تعریف شده و بلافاصله با استفاده از لغت کلیدی New نمونه ای از شی ایجاد شده است. اما در حقیقت تا زمانی که اولین ارجاع به آن صورت نگیرد ساخته نمی شود. بنابراین وقتی که می خواهیم آن را با استفاده از Nothing از بین ببریم شی تازه ساخته میشود و کد نوشته شده در IF هرگز اجرا نمیشود. در صورتی که کد پاکسازی شی در IF باشد به دلیل اجرا نشدن حافظه اشغال شده توسط شی آزاد نمی شود و هدر می رود. در صورتی که شی ما ارجاعی به اشیای دیگر در خودش داشته باشد میزان حافظه هدر رفته بالا می رود و می تواند باعث یک خطای General Protection Fault شود.
توضیح: مشکلاتی از این قبیل در .NET رفع شده اند
mahe_zibaei
پنج شنبه 22 مرداد 1383, 01:38 صبح
nemidonam new onja chekar mikone dogole
MassoudVB
سه شنبه 01 دی 1383, 03:33 صبح
Voldemort دمت گرم
ahmad2005
یک شنبه 16 اسفند 1383, 14:27 عصر
سلام من فکر میکنم که وقتی که کلاس جدید ایجاد شد با مساوی قرار دادن آن با
nothing آزاد میشود بنابراین دیگر کلاسی وجود ندارد پس شرط بعدی نادرست است.
vbadvanced
دوشنبه 17 اسفند 1383, 02:44 صبح
آقای ahmad2005 کلاس تعریف شده اما مقدار Nothing را درخود دارد.
salman_s
یک شنبه 07 فروردین 1384, 15:12 عصر
به نظر من اشکالش اینه که شرط همواره اجرا میشه. :roll:
شما در واقع با SET NOTHING کردن مقدار درون متغییرتان را empty می کنید. به نظرم قطعه کد زیر کمکتان کند.
Dim oObj As Form1
Set oObj = Nothing
If oObj Is Nothing Then
MsgBox "111"
Else
MsgBox "222"
End If
Ramin_f
شنبه 13 فروردین 1384, 12:38 عصر
شما oObj را همواره nothing تعریف می کنی و در این صورت شرط تکرار می شود
vbhamed
دوشنبه 30 خرداد 1384, 21:51 عصر
به نظر من جون obj=nothing شده در واقع دسترسی به اون از بین میره و بنابراین شرط هیچگاه اجرا نمیشه
::نوشتن::
Beyondsoft
پنج شنبه 02 تیر 1384, 15:10 عصر
سرتاپاش اشکال هست
یه چیزی بنویسید
که یه اشکال داشته باشه
در ضمن
اشکالش هم یه ذره سخت باشه
dr_g
پنج شنبه 09 تیر 1384, 14:20 عصر
خط دوم باید Set oObj =New Nothing بشه :موفق:
m-heidari
چهارشنبه 09 فروردین 1385, 13:27 عصر
به نظر شما این کد چه مشکلی داره؟
Dim oObj As New cSimpleClass
Set oObj = Nothing
If oObj Is Nothing Then
.
.
.
.
End If
به نظر من که اشکالی وجود نداره اگه اینطوری باشه و یا هم من درست نفهمیدم :
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim obj As CMyClass
obj = Nothing
If obj Is Nothing Then
MsgBox("Nothing")
End If
End Sub
End Class
Public Class CMyClass
Private intX As Integer
Public Sub New()
Me.intX = 10
End Sub
End Class
Voldemort
جمعه 25 فروردین 1385, 11:28 صبح
دوستان عزیز من جواب صحیح رو در پست شماره 6 دادم. نمی دونم دیگه برای چی دارید این تاپیکو ادامه میدید؟
در این کد ابتدا شی در VB تعریف شده و بلافاصله با استفاده از لغت کلیدی New نمونه ای از شی ایجاد شده است. اما در حقیقت تا زمانی که اولین ارجاع به آن صورت نگیرد ساخته نمی شود. بنابراین وقتی که می خواهیم آن را با استفاده از Nothing از بین ببریم شی تازه ساخته میشود و کد نوشته شده در IF هرگز اجرا نمیشود. در صورتی که کد پاکسازی شی در IF باشد به دلیل اجرا نشدن حافظه اشغال شده توسط شی آزاد نمی شود و هدر می رود. در صورتی که شی ما ارجاعی به اشیای دیگر در خودش داشته باشد میزان حافظه هدر رفته بالا می رود و می تواند باعث یک خطای General Protection Fault شود.
توضیح: مشکلاتی از این قبیل در .NET رفع شده اند
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.