منتدى رياض الجنة - Riad Al-Ganah

منتدى رياض الجنة - Riad Al-Ganah (https://montada.khaledbelal.com/index.php)
-   دورة .NET 2008 من منتدى فيجوال بيسك للعرب (https://montada.khaledbelal.com/forumdisplay.php?f=57)
-   -   الدرس السادس والأربعون : Preprocessor Directives - دورة .net 2008 (https://montada.khaledbelal.com/showthread.php?t=601)

khaledbelal 02-28-2010 05:41 PM

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

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

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

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

#region, #endregion

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


C#:
كود PHP:

#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:

كود PHP:

#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#:
كود PHP:

#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:
كود PHP:

#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#:
كود PHP:

#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 INDEXERSOPERATORS, AND POINTERS 413
#endif
}
}


vb.net:
كود PHP:

#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 nOPERATORS As n, [AND] As 
            POINTERS 
            413 
            
#End If 
        
End Sub 
    End 
Class 
End Namespace 

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



الساعة الآن 01:32 AM.

Powered by vBulletin® v3.8.4, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. , TranZ By Almuhajir
النسخة الفضية

Ads Management Version 3.0.1 by Saeed Al-Atwi

a.d - i.s.s.w