English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي C#

دليل متقدم C#

C# موجه للأتمتة (OOP)

نوع البيانات في C#

C# لغة قوية النوع. هذا يعني أننا يجب أن نعلن نوع المتغير، والذي يشير إلى نوع القيمة التي سيتم تخزينها، مثل عدد صحيح، عدد عشري، عشري عشري، نص إلخ.

تم إعلان وتحديد قيم متغيرات أنواع البيانات المختلفة أدناه.

string stringVar = "Hello World!!";
int intVar = 100;
float floatVar = 10.2f;
char charVar = 'A';
bool boolVar = true;

يقسم C# أنواع البيانات إلى نوعين رئيسيين: الأنواع النقية والأنواع الاستدلالية. الأنواع النقية تشمل أنواعًا بسيطة (مثل int،float،bool وchar)، أنواع القائمة، أنواع الهيكل و أنواع القيمة القابلة للتغيير. الأنواع الاستدلالية تشمل أنواع الكلاسات، أنواع الواجهات، أنواع الوكلاء وأنواع الأنواع. سيتم مناقشة الأنواع النقية والأنواع الاستدلالية بشكل مفصل في الفصل القادم.

الأنواع المسبقة للبيانات في C#

C# يشمل بعض القيم المسبقة للأنواع و الأنواع الاستدلالية. الجدول التالي يظهر الأنواع المسبقة للبيانات:

النوعالوصفالنطاقالساقطة
byteنوع بيانات عددية عشري ذو 8 بتمن 0 إلى 255
sbyteنوع بيانات عددية عشري ذو 8 بتمن -128 إلى 127
shortنوع بيانات عددية عشري ذو 16 بتمن -32,768 إلى 32,767
ushort نوع بيانات عددية عشري ذو 16 بتمن 0 إلى 65,535
intنوع بيانات عددية عشري ذو 32 بت-2,147,483,648

إلى

2,147,483,647


uintنوع بيانات عددية عشري ذو 32 بتمن 0 إلى 4,294,967,295u
longنوع بيانات عددية عشري ذو 64 بت-9,223,372,036,854,775,808
إلى
9,223,372,036,854,775,807
l
ulongنوع عدد غير الموقعة 64 بتمن 0 إلى 18,446,744,073,709,551,615ul
floatنوع ثنائي النقاط 32 بت-3.402823e38 إلى 3.402823e38f
doubleنوع ثنائي النقاط 64 بت-1.79769313486232e308 إلى 1.79769313486232e308d
decimalقيمة عشرية دقيقة 128 بت، 28-29 ديجيت(+ أو-)1.0 x 10e-28 إلى 7.9 x 10e28m
charرمز يونيكود 16 بتأي رمز صالح، مثل a، *, \x0058 (hex)، أو\u0058 (يونيكود)
boolقيمة منطقية 8 بتية صحيح/خطأصحيح أو خطأ
objectأصل جميع الأنواع

string

سلسلة رموز يونيكود



DateTimeيعبر عن تاريخ وموعد0:00:00am 1/1/01
إلى
11:59:59pm 12/31/9999

كما هو موضح في الجدول أعلاه، يحتوي كل نوع بيانات (استثنًا الأنواع النصية والأشياء) على نطاق قيم. إذا كانت القيمة تتجاوز نطاق نوع البيانات المسموح به، فإن الماكينات الأتمتة تقدم خطأ. على سبيل المثال، نطاق نوع البيانات int هو من -2,147,483,648 إلى 2,147,483,647. لذلك، إذا كانت القيمة المحددة ليست في هذا النطاق، فإن الماكينات الأتمتة تقدم خطأ.

    مثال: خطأ في التجميع

// خطأ في التجميع: لا يمكن تحويل النوع 'long' بشكل تلقائي إلى 'int'.
int i = 21474836470;

يجب أن تكون قيم الأعداد غير الموقعة، long، float، double وdecimal محملة بالسمات u، l، f، d وm على التوالي.

uint ui = 100u;
float fl = 10.2f;
long l = 45755452222222l;
ulong ul = 45755452222222ul;
double d = 11452222.555d;
decimal mon = 1000.15m;

الاسم المختصر وأنواع.NET

أنواع البيانات المسبقة التعريف لها أسماء بديلة كأسماء النوع.NET (فئة CLR). الجدول أدناه يظهر أسماء الأنواع المسبقة التعريف وأسماء الفئات.NET المرتبطة بها.

الاسم المختصرنوع.NETالنوع
byteSystem.Bytestruct
sbyteSystem.SBytestruct
intSystem.Int32struct
uintSystem.UInt32struct
shortSystem.Int16struct
ushortSystem.UInt16struct
longSystem.Int64struct
ulongSystem.UInt64struct
floatSystem.Singlestruct
doubleSystem.Doublestruct
charSystem.Charstruct
boolSystem.Booleanstruct
objectSystem.ObjectClass
stringSystem.StringClass
decimalSystem.Decimalstruct
DateTimeSystem.DateTimestruct

هذا يعني أن المتغير سواء كان تعريفه int أو Int32 هو نفسه.

int i = 345;
Int32 i = 345; // نفس الشرح

تحويلات النوع

قيم بعض أنواع البيانات ستُتحول تلقائيًا إلى أنواع بيانات أخرى في C#. هذا يُسمى بتحويل ضمني.

int i = 345;
float f = i;
Console.WriteLine(f); //الناتج: 345

في المثال السابق، قيمة متغير int i تُ赋ًى إلى متغير float f، لأن هذه العملية التحويلية مُndefined مسبقًا في C#.

هذه هي جدول تحويل البيانات ضمني.

تحويل ضمنيإلى
sbyteshort, int, long, float, double، decimal
byteshort, ushort, int, uint, long, ulong, float, double، decimal
shortint, long, float, double أو decimal
ushortint, uint, long, ulong, float, double أو decimal
intlong, float, double أو decimal.
uintlong, ulong, float, double أو decimal
longfloat, double أو decimal
ulongfloat, double أو decimal
charushort, int, uint, long, ulong, float, double أو decimal
floatDouble

من التحويل من int أو uint أو long أو ulong إلى float وكذلك التحويل من long أو ulong إلى double قد يؤدي إلى فقدان الدقة. لا يوجد تحويل ضمني إلى نوع البيانات char.

但是,并非所有数据类型都隐式转换为其他数据类型。例如,int类型不能隐式转换为uint。必须明确指定它,如下所示。

مثال: التحويلات الصريحة
public static void Main()
    {
    int i = 100;
    uint u = (uint) i;
Console.Write(i);

}