مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

نوع داده struct در سی شارپ - بخش دوم - کلیک سایت


نوع داده ساختمان (struct) در سی شارپ - بخش دوم - کلیک سایت

قسمت دوم

در قسمت قبلی با تعریف نوع داده ساختمان (struct)  در سی شارپ اشنا شدیم و اشاره کردیم که ساختاری از زیر مجموعه نوع داده مقدار (value taype) است و برای ذخیره مقادیر متفاوت از مقادیر داده ای (data) و فانکشنی (function) ، در قالب یک متغیر استفاده می شود. در این مقاله سعی داریم تا با مطالب بیشتری در رابطه با این نوع داده آشنا شویم .

انتساب در نوع داده ساختمان (struct) در سی شارپ

می توان یک متغیر از نوع ساختمان (struct) در سی شارپ را به متغیر دیگر از نوع داده ساختمان نسبت داد .

مثال : انتساب یک متغیر از نوع ساختمان (struct) به متغیر دیگر
   

 class Program
    {
        struct rectangle
        {
            private decimal Pwidth;
            private decimal Pheight;

            public rectangle(decimal W, decimal H)
            {
                Pwidth = W;
                Pheight = H;

            }

       
            public decimal area()
            {
               return  (Pwidth + Pheight) * 2;
            }
        }

        static void Main(string[] args)
        {
            rectangle orectangle=new rectangle(10,20) ;
            rectangle newRectangle = orectangle;          

            Console.WriteLine("area of rectangle= " + newRectangle.area().ToString());
      

        }   

    }

 در مثال بالا ابتدا از نوع ساختمان (struct) تعریف شده با نام rectangle ، یک نمونه با نام orectangle ایجاد و مقدار دهی می شود (با استفاده از کلمه new ). و سپس مقادیر نمونه ایجاد شده ، با استفاده از عملگر انتساب ، در متغیر جدید با نام newRectangle کپی می شود.

توجه کنید که از ان جا که نوع داده ساختمان (struct) در سی شارپ از نوع داده مقدار (valu type) است ، کپی مقادیر در متغیر جدید، با دستور انتساب ، به این معنا است که پس از انتساب ، هر دو متغیر به صورت مستقل عمل می کنند و تغییر در یکی باعث تغییر در داده های دیگری نخواهد شد .
خروجی قطعه کد بالا برابر خواهد بود با :

area of rectangle=60

نکته

قبل از انتساب یک متغیر از نوع ساختمان (struct) به دیگری ، باید متغیر ساختمان (struct)  که در سمت راست  دستور انتساب قرار دارد ، مقدار دهی شده باشد در غیر این صوررت با خطای زمان کامپایل برخورد خواهیم کرد.


مثال:  خطا مقدار دهی در انتساب متغیر نوع ساختمان (struct) در سی شارپ
    

    static void Main(string[] args)
        {
            rectangle orectangle;
            rectangle newRectangle = orectangle;          

            Console.WriteLine("area of rectangle= " + newRectangle.area().ToString());
      

        }

در این مثال از انجا که متغیر orectangle مقدار دهی اولیه نشده است در زمان انتساب با خطای unassigned برخورد  خواهیم کرد و این خطا به صورت زیر است :

تفاوت بین نوع داده ساختمان (struct) درسی شارپ و نوع داده کلاس (class)

با وجود شباهت های زیاد بین نوع داده ساختمان (struct) در سی شارپ و نوع داده کلاس (class) در سی شارپ در تعریف این دو تفاوت های نیز وجود دارد :

  • در داخل تعریف نوع داده ساختمان (struct) در سی شارپ ، هیچ فیلدی بجز فیلد از نوع static و const نمی توانند مقدار دهی شوند.

مثال : خطای مقدار دهی فیلد ها درون تعریف یک ساختمان (struct)

struct rectangle
        {
            private decimal Pwidth=0;
            private decimal Pheight;  
           }         

در قطعه کد بالا به علت مقدار دهی متغیر  Pwidth درون تعریف ساختمان با خطای زیر مواجه خواهیم شد :

 

  • در نوع داده ساختمان (struct) نمی توان سازنده پیش فرض (default constrauctor : سازنده بدون پارامتر های ورودی ) تعریف کرد .

  • نوع داده ساختمان (struct) در سی شارپ از نوع داده مقدار (value type) است (نوع داده کلاس از نوع داده مرجع (reference type) است). بنابراین در زمان انتساب ، یک ساختمان (struct) به یک متغیر ، مقدار آن در متغیر جدید کپی می شود و هر گونه تغییر ی در هر کدام تغییری در دیگری ایجاد نمی کند.

  • می توان از نوع داده ساختمان (struct) در سی شارپ ، بدون استفاده از کلمه new نمونه ساخت ، در حالی که در نمونه سازی از نوع داده کلاس (class) استفاده از new اجباری است.

  • نوع داده ساختمان (struct) در سی شارپ نمی تواند از هیچ کلاس (class) و یا ساختمان (struct) دیگری ارث بری داشته باشد .

  • نوع داده ساختمان (struct) در سی شارپ نمی تواند پایه هیچ کلاسی (base class ) باشد .

  • نوع داده ساختمان (struct) در سی شارپ نمی تواند مخرب (destructor)داشته باشد.

نکته

  • نوع داده ساختمان در سی شارپ به صورت مستقیم از system.valueType  ارث بری می کند و آن نیز از کلاس system.object ارث بری می کند. در نتیجه آن ، نوع داده ساختمان (struct) در سی شارپ به صورت غیر مستقیم از کلاس object  ارث بری می کند.

  • نوع داده ساختمان در سی شارپ می تواند اینترفیس ها (interface) را پیاده سازی کند .

  • نوع داده ساختمان در سی شارپ می تواند مقدار null  بگیرد و به عنوان یک نوع nullable استفاده شود .

گرد آوری : سمانه وزیریان
 

فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

آموزش ارسال پیامک، آموزش ارسال پیامک تکی و گروهی ، ارسال پیامک به صورت اختصاصی برای هر مشترک، دریافت پیامک، مشاهده وضعیت…

توضیحات کلی مجموعه:   آیا می دونید قیمت نرم افزارهای مدیریت پیامک در حدود 150 هزار تومان است؟ اما توسط این دوره شما میتونید با مبلغ بسیار کمتر یک نرم افزار مدیریت پیامک رو به صورت کاملا حر…
فصلِ: 9 , تعداد قسمت ها: 59 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل پایانی این دوره می باشد در مورد نحوه ساختن فایل نصبی سریع یا همان quick installer که روش پیشنهاد شده م…

توضیحات کلی مجموعه: پس از بازخوردهای بسیار خوبی که از دوره های آموزش برنامه نویسی سیستم اتوماسیون اداری و آموزش برنامه نویسی سیستم فروش و انبارداری مشاهده کردیم، تصمیم گرفتیم با توجه به درخ…
فصلِ: 13 , تعداد قسمت ها: 120 , سطح: صفر تا صد
موضوعات: آموزش سی شارپ

این فصل در یک نگاه:

در این فصل که فصل آخر از مجموعه بزرگ آموزش سیستم اتوماسیون اداری می باشد در ابتدا در مورد اسناد و نامه های خارج از سازما…

دوره صفر تا صد  آموزش برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری تحت شبکه. (توصیه می شود دومی مجموعه را حتما ببینید) امروزه اطلاعات یکی از مهمترین و با ارزشترین منابع هر اداره و یا ساز…
فصلِ: 4 , تعداد قسمت ها: 14 , سطح: مقدماتی

این فصل در یک نگاه:

توضیح تنظیمات گرافیک و صدا در یونیتی پیاده سازی منو ها …

به نام خدا   بازی‌سازی یک حرفه بسیار جذاب است و تبدیل شدن به یک بازی‌ساز حرفه‌ای آرزوی همه ماست. اینکه بتوانیم دنیای خاصی خلق کنیم و در این دنیا قوانین خود را پیاده کنیم، همیشه ما را به وج…
فصلِ: 11 , تعداد قسمت ها: 92 , سطح: صفر تا صد

این فصل در یک نگاه:

اجرای سیستم روی سیستم، قرار دادن سیستم روی سرور، تعریف Connetion String، آشنایی با فایل App.config، ساخت رشته اتصال به ص…

مهمترین تکنولوژیهای استفاده شده در این دوره پروژه محور (سیستم فروش کالا و انبارداری) طراحی گرافیکی به روش WPF (Windows Presentaion Foundation) آموزش کامل برنامه نویسی xaml (برای طراحی های …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید