المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس السادس والأربعون : Preprocessor Directives - دورة .net 2008


khaledbelal
02-28-2010, 05:41 PM
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

كثيراً خلال تصفحك للبرامج او للمشاريع الجاهزة أو حتى للادوات في برنامجك ما تعثر على الشكل التالي مثلاً :

http://vb4arab.com/vb/uploaded/3/01208777597.jpg

وكنت على حد علمك تعرف انها طريقة لوضع مجموعة من الاكواد ضمن حدود معينة بحيث يتم فتحها واغلاقها بسهولة لضمان عدم التشويش لك أثناء كتابتك الكود ، إلا ان ما ستعرفه في هذا الدرس أن هذه ال Regions وخلافها هي مجموعة من ال Preprocessor Directives التي سنتعرف عليها تفصيلاً في هذا الدرس .

#region, #endregion

تستخدم عادة لتنسيق مظهر الكود في ملف cs الخاص بك كما ذكرنا سابقاً ، يمكن كتابتها بالشكل التالي مثلاً :


C#:

#region "Class Employee"
public class Employee
{
private string _name;
private string _age;
private string _salary;
public string name
{
get { return _name; }
set { _name = value; }
}
public string age
{
get { return _age; }
set { _age = value; }
}
public string name
{
get { return _salary; }
set { _salary = value; }
}
}
#endregion

vb.net:


#Region "Class Employee"
Public Class Employee

Private _name As String
Private _age As String
Private _salary As String

Public Property name() As String
Get
Return _name
End Get
Set
_name = value
End Set
End Property

Public Property age() As String
Get
Return _age
End Get
Set
_age = value
End Set
End Property

Public Property name() As String
Get
Return _salary
End Get
Set
_salary = value
End Set
End Property
End Class
#End Region

الآن يمكنك فتحها واغلاقها من الطرف ، بحيث يكون كودك منظماً بالشكل التالي مثلاً :

http://vb4arab.com/vb/uploaded/3/01208778049.jpg

#if, #elif, #else, #endif

يطلق عليها اسم Conditional Code Compilation ، وتستخدم لتنفيذ اجزاء معينة من الكود في حالات معينة فقط ، فمثلاً لجعل جزء من الكود لا يعمل فقط إلا وقت ال Debug وليس في وقت ال Relase نكتب الكود بالشكل التالي :

C#:

#if DEBUG
Console.WriteLine("App directory: {0}",
Environment.CurrentDirectory);
Console.WriteLine("Box: {0}",
Environment.MachineName);
Console.WriteLine("OS: {0}",
Environment.OSVersion);
Console.WriteLine(".NET Version: {0}",
Environment.Version);
#endif

vb.net:

#If DEBUG Then
Console.WriteLine("App directory: {0}", Environment.CurrentDirectory)
Console.WriteLine("Box: {0}", Environment.MachineName)
Console.WriteLine("OS: {0}", Environment.OSVersion)
Console.WriteLine(".NET Version: {0}", Environment.Version)
#End If


بنفس الطريقة يمكن استخدام else و elif .

#define, #undef

تستخدم لتعريف symbol معين ، مثلاً يمكنك تعريف symbol لل Debug ، او يمكنك تعريف symbol خاص بك بأي اسم ليتم استخدامه لاحقاً ، المثال التالي مثلاص لتعريف Symbol يعني ان هذا الكود يتم عمل Debug له فقط على Mono .

http://vb4arab.com/vb/uploaded/3/01208778527.jpg

لاحقاً يمكنك كتابة كود بالشكل التالي :

C#:

#define DEBUG
#define MONO_BUILD
using System;
namespace PreprocessorDirectives
{
class Program
{
static void Main(string[] args)
{
#if MONO_BUILD
Console.WriteLine("Compiling under Mono!");
#else
Console.WriteLine("Compiling under Microsoft .NET");
CHAPTER 12 n INDEXERS, OPERATORS, AND POINTERS 413
#endif
}
}
}


vb.net:

#Define DEBUG
#Define MONO_BUILD
Imports System
Namespace PreprocessorDirectives
Class Program
Private Shared Sub Main(ByVal args As String())
#If MONO_BUILD Then
Console.WriteLine("Compiling under Mono!")
#Else
Console.WriteLine("Compiling under Microsoft .NET")
CHAPTER
12
Dim INDEXERS As n, OPERATORS As n, [AND] As n
POINTERS
413
#End If
End Sub
End Class
End Namespace


والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .