نمایش نتایج 1 تا 10 از 10

نام تاپیک: تفاوت Cast و Convert

  1. #1

    تفاوت Cast و Convert

    با سلام خدمت دوستان عزیز

    میخواستم بپرسم تفاوت بین Cast کردن و Convert کردن در سی شارپ چی هست؟ از نظر تعریف و مفهوم
    از پاسختون هم پیشاپیش تشکر میکنم

  2. #2
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    پست
    389

    نقل قول: تفاوت Cast و Convert


  3. #3

    نقل قول: تفاوت Cast و Convert

    خب تو C#‎ هم هست
    تفاوتش این دو تا رو بگین

  4. #4

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: تفاوت Cast و Convert

    نقل قول نوشته شده توسط OmMiD_MtWo مشاهده تاپیک
    با سلام خدمت دوستان عزیز

    میخواستم بپرسم تفاوت بین Cast کردن و Convert کردن در سی شارپ چی هست؟ از نظر تعریف و مفهوم
    از پاسختون هم پیشاپیش تشکر میکنم
    بحثش طولانيه ولي يه مثال ميزنم:

    اگه عدد 12.8 رو به int كست (cast) كني كامپايلر مياد و 12 رو برميداره و اعشار رو دور ميريزه و حاصل ميشه 12 و نوعي Truncate انجام ميشه
    اما اگه ConvetToInt32 كني به عدد 13 گرد ميشه.


    حالا بستگي به كاربردت داره. اگه دقت مهمه cast نكن ولي اگه دقت مهم نيست cast بهتره چون محاسبه اي نميكنه و قسمت اعشار رو ميريزه دور


    اين مثال فقط براي Type عدد بود ولي بحث كلي تر از اين حرفاست

    تو بحث cast ما دو نوع داريم: Up Casting و Down casting كه هر كدوم رو بايد مفصل توضيح داد.

    اگه همين قدر كفايت ميكنه كه هيچ، در غير اينصورت ميتونم كامل توضيح بدم

  6. #6

    نقل قول: تفاوت Cast و Convert

    نقل قول نوشته شده توسط elec60 مشاهده تاپیک
    بحثش طولانيه ولي يه مثال ميزنم:

    اگه عدد 12.8 رو به int كست (cast) كني كامپايلر مياد و 12 رو برميداره و اعشار رو دور ميريزه و حاصل ميشه 12 و نوعي Truncate انجام ميشه
    اما اگه ConvetToInt32 كني به عدد 13 گرد ميشه.


    حالا بستگي به كاربردت داره. اگه دقت مهمه cast نكن ولي اگه دقت مهم نيست cast بهتره چون محاسبه اي نميكنه و قسمت اعشار رو ميريزه دور


    اين مثال فقط براي Type عدد بود ولي بحث كلي تر از اين حرفاست

    تو بحث cast ما دو نوع داريم: Up Casting و Down casting كه هر كدوم رو بايد مفصل توضيح داد.

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

  7. #7
    کاربر دائمی آواتار juza66
    تاریخ عضویت
    دی 1389
    محل زندگی
    هفت تپه - 7hill
    پست
    798

    نقل قول: تفاوت Cast و Convert


  8. #8

    نقل قول: تفاوت Cast و Convert

    اگه منظور شما از convert همون تبدیل باشه می تونیم از دو نوع تبدیل نام ببریم: تبدیل ضمنی و تبدیل صریح. تبدیل ضمنی مثل انواع تبدیلی که از طریق انتساب یک مقدار به مقدار دیگه میتونه انجام بشه مثلا یک مقدار byte به int تبدیل بشه

    byte a = 12;
    int b = a;

    تبدیل صریح عبارت است از انواع تبدیل ضمنی همچنین تبدیلهایی که با تبدیل ضمنی قابل انجام نباشه مثل تبدیل int به byte که این نوع تبدیلها توسط cast انجام میشه

    int b = 12;
    byte a = (byte)b;

    اما cast کردن همیشه موفقیت آمیز نیست یا ممکنه موجب از دست رفتن اطلاعات بشه
    مثل این تبدیل

    int a = 345;
    byte b = (byte) a;

    اگه منظور شما از Convert همون کلاس System.Convert باشه، Convert همون cast هست به اضافه اینکه در Convert میتونیم از استثناها exception استفاده کنیم

  9. #9
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,499

    نقل قول: تفاوت Cast و Convert

    با سلام.
    در ظاهر خیلی شبیه به هم هستند و ممکنه گاها در لغت و کارایی به جای یکدیگر استفاده بشن؛ ولی میشه تفاوتهایی رو از نظر مفهومی در موردشون بیان کرد.
    میشه گفت چیزی که ازش به عنوان Cast یاد میشه فرض کردن یک type، به عنوان type دیگه ای هست (البته این تعریف بیشتر implicit cast رو شامل میشه).
    به عنوان مثال اگر شما داده ای از نوع Char با مقدار '1' رو، به نوع Int دو بایتی Cast کنید حاصل عدد 49 خواهد بود!! و این به دلیل اینه که در کدگذاری ascii کاراکتر '1' رو با یک بایت به مقدار 49 کد می کنند و Cast عینا همین ساختار بایتی رو به عنوان Int در نظر میگیره و هیچ پردازش خاصی روش انجام نمیده؛ در حالیکه اگر شما همین مقدار '1' رو با Convert کردن به Int تبدیل کنید، مقدار عددی 1 رو خواهید داشت، به دلیل اینکه انتظار میره تا در Convert عملیات خاصی برای تبدیل مقدار یک نوع، به مقدار مناسب خودش در نوع دیگر صورت بگیره.

    در Cast کمتر عملیات خاصی انجام میشه در حالی که ممکنه Convert نیاز به عملیات برای تبدیل یک Type به type دیگری رو داشته باشه.
    با Cast می تونید Type های هم خانواده رو با هم تبدیل کنید ولی در Convert ممکنه دو Type کاملا متفاوت رو به هم تبدیل کنید و یا یک مقدار رو به یک مقدار دیگه از همون type تبدیل کنید (مثل تبدیل string به base64 و یا تبدیل عکس رنگی به سیاه و سفید).
    برای مثال اگر شما یک object از نوع Bitmap رو بخواهید به Image تبدیل کنید در واقع یک Cast کرده اید ولی مثلا اگر یک Bitmap رو با عملیاتی شبیه به OCR تبدیل به متن کنید، مفهوم Convert رو پیاده سازی کردید.
    در Cast شما محدود تر خواهید بود، چرا که باید دو نوع هم خانواده داشته باشیم (مثل Int و long) و یا دو نوع از نظر ساختار باینری شبیه به هم باشند (مثل Char و Int16) و یا تبدیل فرزند به پدر(Boxing) و یا بر عکس(unboxing)؛ در حالیکه Convert علاوه بر اینکه مفهوم Cast رو پوشش میده، بلکه میتونه هر چیزی رو به هر چیز دیگری تبدیل کنه.
    با این تفاسیر رشته "1234" هرگز و به هیچ وجه به یک int16 قابل Cast نیست و همچنین عدد مثلا 16 به رشته "16 هیچ وقت Cast نمیشه، چرا که ساختار کاملا متفاوتی دارند (اگر چه از نظر ظاهری داده های متشابهی داشته باشند)؛ و این در حالیه که Convert کردن یک رشته به عدد و بر عکس یک امر بسیار معمول و پر کاربرد به شمار میاد.

    موفق باشید!
    آخرین ویرایش به وسیله مهرداد صفا : سه شنبه 29 مهر 1393 در 10:49 صبح
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

  10. #10
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: تفاوت Cast و Convert

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

تاپیک های مشابه

  1. سوال: تفاوت دستور int32.parse با system.convert
    نوشته شده توسط r4hgozar در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: شنبه 13 مهر 1392, 17:02 عصر
  2. تفاوت Ctype(x,Double) , Convert.Todouble(x) , Cdbl(x) va
    نوشته شده توسط hossein-khoshseyar در بخش VB.NET
    پاسخ: 5
    آخرین پست: سه شنبه 16 آذر 1389, 07:49 صبح
  3. تفاوت تابع convert.toint32 با int32.parse
    نوشته شده توسط kohyar در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 21 آذر 1388, 18:49 عصر
  4. تفاوت بین Hard Cast و AS Cast در دلفی
    نوشته شده توسط m-khorsandi در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 0
    آخرین پست: پنج شنبه 10 خرداد 1386, 15:54 عصر
  5. تفاوت vb6 و vb.net
    نوشته شده توسط morteza_dehghan در بخش VB.NET
    پاسخ: 9
    آخرین پست: دوشنبه 23 تیر 1382, 15:52 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •