آموزش مقدمات سی شارپ - انواع داده ها


دات وایت | DotWhite.ir
آموزش مقدمات سی شارپ - انواع داده ها

سی شارپ | انواع داده ها

انواع داده ها نوع داده هایی را نشان می دهند که یک متغیر معتبر سی شارپ می تواند در اختیار داشته باشد. سی شارپ یک زبان برنامه نویسی به شدت از پیش تعریف شده است زیرا در سی شارپ ، هر نوع داده (مانند عدد صحیح ، کاراکتر ، float و موارد دیگر) به عنوان بخشی از زبان برنامه نویسی از پیش تعریف شده است و کلیه ثابت ها یا متغیرهای تعریف شده برای یک برنامه مشخص باید با یکی از انواع داده ها تعریف شده باشد.


انواع داده ها در سی شارپ به طور عمده به سه دسته تقسیم می شوند

1- انواع داده های ارزشی

2- انواع داده های مرجع 

3- نوع داده اشاره گر


1- انواع داده های ارزشی: در سی شارپ ، انواع داده های ارزشی مستقیماً مقدار متغیر را در حافظه ذخیره می کند و همچنین هر دو متنی امضا شده و بدون علامت را می پذیرد. کلاس مشتق شده برای این نوع داده ها System.ValueType است. در جدول زیر انواع مختلف داده های ارزشی (Value Data Types) در زبان برنامه نویسی سی شارپ نوشته شده است:


انواع عدد صحیح (integer) امضا شده و بدون امضا: 8 نوع عدد صحیح وجود دارد که پشتیبانی از مقادیر 8 بیتی ، 16 بیتی ، 32 بیتی و 64 بیتی را به صورت امضا شده یا بدون امضا ارائه می دهند.

ALIASTYPE NAMETYPESIZE(BITS)RANGEDEFAULT VALUE
sbyteSystem.Sbytesigned integer8-128 to 1270
shortSystem.Int16signed integer16-32768 to 327670
IntSystem.Int32signed integer32-231 to 231-10
longSystem.Int64signed integer64-263 to 263-10L
byteSystem.byteunsigned integer80 to 2550
ushortSystem.UInt16unsigned integer160 to 655350
uintSystem.UInt32unsigned integer320 to 2320
ulongSystem.UInt64unsigned integer640 to 2630


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

Float: این یک نوع اعشاری با دقت 32 بیتی است. دارای دقت 7 رقمی است. برای شروع یک متغیر float ، از پسوند f یا F. استفاده می شود ، float x = 3.5F ؛. اگر پسوند F یا f استفاده نشود ، به عنوان double در نظر گرفته می شود.

Double: این نوع اعشاری از نوع 64 بیتی است. دارای دقت 14 - 15 رقمی است. برای شروع یک متغیر double ، از پسوند d یا D. استفاده می شود اما استفاده از پسوند اجباری نیست زیرا به طور پیش فرض انواع اعشاری ها نوع double هستند.

ALIASTYPE NAMESIZE(BITS)RANGE (APROX)DEFAULT VALUE
floatSystem.Single323.4 × 1038 to +3.4 × 10380.0F
doubleSystem.Double64±5.0 × 10-324 to ±1.7 × 103080.0D

انواع دهدهی (Decimal): نوع دهدهی (Decimal) یک نوع داده 128 بیتی است که برای محاسبات مالی و پولی مناسب است. دارای دقت 28-29 رقمی است. برای شروع یک متغیر دهدهی (Decimal) ، از پسوند m یا M. استفاده می شود ، مثل x = 300.5m ؛. اگر پسوند m یا M استفاده نشود ،به عنوان double در نظر گرفته می شود.

ALIASTYPE NAMESIZE(BITS)RANGE (APROX)DEFAULT VALUE
decimalSystem.Decimal128-7.9 × 1028 to 7.9 × 10280.0M


انواع کاراکتر: انواع کاراکترها یک کد UTF-16 را نشان می دهند یا کاراکتر یونیکد 16 بیتی را نشان می دهند

ALIASTYPE NAMESIZE IN(BITS)RANGEDEFAULT VALUE
charSystem.Char16U +0000 to U +ffff‘’

مثال:

// C# program to demonstrate 

// the above data types

using System;

namespace ValueTypeTest

{

    class DotWhite_IR

    {

        // Main function

        static void Main()

        {

            // declaring character

            char a = 'G';


            // Integer data typeis generally

            // used for numericvalues

            int i = 89;

            short s = 56;


            // this will give error as number

            // is larger than short range

            // short s1 = 87878787878;

            // long uses Integer values which 

            // may signed orunsigned

            long l = 4564;


            // UInt data type is generally

            // used for unsigned integer values

            uint ui = 95;

            ushort us = 76;

            // this will give error as number is

            // larger than short range

            // ulong data type isgenerally

            // used for unsigned integer values

            ulong ul = 3624573;

            // by default fraction value

            // is double in C#

            double d = 8.358674532;


            // for float use 'f'as suffix

            float f = 3.7330645f;

            // for float use 'm'as suffix

            decimal dec = 389.5m;


            Console.WriteLine("char: " + a);

            Console.WriteLine("integer:" +i);

            Console.WriteLine("short: " + s);

            Console.WriteLine("long: " + l);

            Console.WriteLine("float: " + f);

            Console.WriteLine("double: " + d);

            Console.WriteLine("decimal:" +dec);

            Console.WriteLine("Unsingedinteger: " + ui);

            Console.WriteLine("Unsingedshort: " + us);

            Console.WriteLine("Unsinged long:" +ul);

        }

    }

}


خروجی:

char: G
integer: 89
short: 56
long: 4564
float: 3.733064
double: 8.358674532
decimal: 389.5
Unsinged integer: 95
Unsinged short: 76
Unsinged long: 3624573


مثال:

// C# program to demonstrate the Sbyte

// signed integral data type

using System;

namespace ValueTypeTest

{

    class DotWhite_IR

    {

        // Main function

        static void Main()

        {

            sbyte a = 126;


            // sbyte is 8 bit 

            // singned value

            Console.WriteLine(a);


            a++;

            Console.WriteLine(a);

            // It overflows herebecause

            // byte can holdvalues 

            // from -128 to 127

            a++;

            Console.WriteLine(a);


            // Looping back within 

            // the range

            a++;

            Console.WriteLine(a);

        }

    }

}


خروجی:

126
127
-128
-127


مثال:

// C# program to demonstrate 

// the byte data type

using System;

namespace ValueTypeTest

{

    class DotWhite_IR

    {

        // Main function

        static void Main()

        {

            byte a = 0;

            // byte is 8 bit 

            // unsigned value

            Console.WriteLine(a);

            a++;

            Console.WriteLine(a);

            a =254;


            // It overflows here because

            // byte can hold values from

            // 0 to 255

            a++;

            Console.WriteLine(a);


            // Looping back within the range

            a++;

            Console.WriteLine(a);

        }

    }

}


خروجی:

0
1
255
0


انواع بولی(Boolean): باید مقدار درست (true) یا غلط(false) اختصاص یابد. مقادیر نوع بولی(Boolean) به طور ضمنی یا صریح به هر نوع دیگر تبدیل نمی شود. اما برنامه نویس می تواند به راحتی کد تبدیل را بنویسد.

ALIASTYPE NAMEVALUES
boolSystem.BooleanTrue / False


مثال:

// C# program to demonstrate the

// boolean data type

using System;

namespace ValueTypeTest

{

    class DotWhite_IR

    {

        // Main function

        static void Main()

        {

            // boolean data type

            bool b = true;

            if (b == true)


                Console.WriteLine("Hi Geek");

        }

    }

}


خروجی:

Hi Geek


2- انواع داده های مرجع: انواع داده های مرجع دارای یک آدرس حافظه با مقدار متغیر هستند زیرا انواع مرجع مقدار متغیر را مستقیماً در حافظه ذخیره نمی کنند. انواع مرجع داخلی رشته ای (string) ، اشیاء (object) هستند.

رشته ای (string): این نوع داده یک توالی از کاراکترهای یونیکد را نشان می دهد و نام نوع آن System.String است. بنابراین ، String و string معادل آن هستند.

مثال:

string s1 = "hello"; // creating through string keyword  
String s2 = "welcome"; // creating through String class  


اشیاء (object): در سی شارپ ، انواع ، از پیش تعریف شده و تعریف شده توسط کاربر ، انواع مرجع و انواع ارزشی ، به طور مستقیم یا غیرمستقیم از اشیاء (object) ارث می برند. بنابراین اساساً کلاس پایه انواع داده ها در سی شارپ است. قبل از مقدار دهی ، نیاز به تبدیل نوع دارد. وقتی مقدار متغیری از یک نوع به شی تبدیل شود ، به آن boxing گفته می شود. هنگامی که یک متغیر از نوع شی به یک نوع داده دیگر تبدیل می شود ، به آن unboxing گفته می شود. نام نوع آن System.Object است.


مثال:

// C# program to demonstrate

// the Reference data types

using System;

namespace ValueTypeTest

{

    class DotWhite_IR

    {

        // Main Function

        static void Main()

        {

            // declaring string

            string a = "Geeks";

            //append in a

            a += "for";

            a = a +"Geeks";

            Console.WriteLine(a);


            // declare object obj

            object obj;

            obj =20;

            Console.WriteLine(obj);


            // to show type of object

            // using GetType()

            Console.WriteLine(obj.GetType());

        }

    }

}


خروجی:

GeeksforGeeks
20
System.Int32


3- نوع داده اشاره گر(Pointer): انواع داده اشاره گر(Pointer) حاوی یک آدرس حافظه از مقدار متغیر هستند.

برای به دست آوردن جزئیات نشانگر ، دو نماد ampersand(&) و asterisk(*) داریم.

ampersand (&): به عنوان عملگر آدرس شناخته می شود. برای تعیین آدرس متغیر استفاده می شود.

asterisk(*): همچنین به عنوان عملگر Indirection شناخته می شود. برای دسترسی به مقدار یک آدرس استفاده می شود.

شکل کلی دستور :

type* identifier;


مثال:

int* p1, p;   // Valid syntax
int *p1, *p;   // Invalid 

// Note: This program will not work on

// online compiler

// Error: Unsafe code requires the `unsafe'

// command line option to be specified

// For its solution:

// Go to your project properties page and

// check under Build the checkbox Allow

// unsafe code.

using System;

namespace Pointerprogram

{

    class DotWhite_IR

    {

        // Main function

        static void Main()

        {

            unsafe

            {

                // declare variable

                int n = 10;


                // store variable naddress

                // location in pointervariable p

                int* p = &n;

                Console.WriteLine("Value:{0}",n);

                Console.WriteLine("Address:{0}",(int)p);

            }

        }

    }

}

منبع : دات وایت | DotWhite.IR



تاریخ انتشار : سه شنبه 19 فروردين 1399 ساعت: 19:19 | نظرات()
برچسب ها : , , , , , , , , , , , , , , , , , , , ,

نویسنده :

بازديد : 174

موضوع: سی شارپ , کد های مفید ,

بخش نظرات این مطلب
نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتیرفرش کد امنیتی