My Programming Notes

Here are Notes.... come from debugging

My Programming Notes

Here are Notes.... come from debugging

۳ مطلب در تیر ۱۳۹۶ ثبت شده است

چهارشنبه, ۲۱ تیر ۱۳۹۶، ۰۴:۵۰ ب.ظ

تفاوت بین Interface های Enumerator و Enumerable در C# - قسمت دوم

 

-- ادامه پست قبل

  مثال های از استفاده از IEnumerable ,  IEnumerator Interface:

        }ngth; i++)

}

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class ColorEnumerator : IEnumerator
    {
        string[] _colors;
        int _position = -1;
        public ColorEnumerator(string[] theColors) // Constructor
        {
            _colors = new string[theColors.Length];
            for (int i = 0; i < theColors.Length; i++)
                _colors[i] = theColors[i];
        }
        public object Current // Implement Current.
        {
            get
            {
                if (_position == -1)
                    throw new InvalidOperationException();
                if (_position >= _colors.Length)
                    throw new InvalidOperationException();
                return _colors[_position];
            }
        }
        public bool MoveNext() // Implement MoveNext.
        {
            if (_position < _colors.Length - 1)
            {
                _position++;
                return true;
            }
            else
                return false;
        }
        public void Reset() // Implement Reset.
        {
            _position = -1;
        }
    }
    class Spectrum : IEnumerable
    {
        string[] Colors = { "violet", "blue", "cyan", "green", "yellow", "orange", "red" };
        public IEnumerator GetEnumerator()
        {
            return new ColorEnumerator(Colors);
        }
    }
    class Program
    {
        static void Main()
        {
            Spectrum spectrum = new Spectrum();
            foreach (string color in spectrum)
                Console.WriteLine(color);
        }
    }

 خروجی :

violet

blue

cyan

green

yellow

orange

red

  

Generic Enumeration Interfaces  :

ما تا الان در مورد Non Generic Enumeration Interfaces   بحث کردیم ولی در واقعیت ما بیشتر از نوع مطمئن Generic Enumeration Interfaces  استفاده می کنیم . که آنها خود IEnumerable  و IEnumerator interfaces. دارند.

مهمترین تفاوت NonGeneric و Generic  موارد زیر هستند:

       در  the NonGeneric Interface form  :

متد GetEnumerator     از اینترفیس  IEnumerable نمونه ای  از کلاس enumerator  را بر می گرداند که IEnumerator را پیاده سازی می کند.

کلاسی که IEnumerator  را پیاده سازی می کند همچنین خصوصیت  Current  را  پیاده سازی می کند که  refrence ای از نوع object بر می گرداند. که در نهایت باید به نوع واقعی شی تبدیل شود.

  در  the Generic Interface form    :

متد GetEnumerator   از اینترفیس  IEnumerable نمونه ای  از کلاس IEnumerator را برمی پرداند.

کلاسی که IEnumerator را پیاده سازی می کند همچنین خصوصیت Current را هم پیاده سازی می کند که یک مقدا رواقعی را نمونه سازی میکند به جای  reference  به شی کلاس پایه.

 


۰ نظر موافقین ۰ مخالفین ۰ ۲۱ تیر ۹۶ ، ۱۶:۵۰
سارا زکی زاده
شنبه, ۱۰ تیر ۱۳۹۶، ۱۲:۲۷ ب.ظ

اطلاعات ستون های جداول پایگاه داده

برای مستند سازی از قسمتی از پروژه ای که روش کار می کنم نیاز داشتم تمام اطلاعات ستون های جداول رو بهتر بشناسم . برای این کار از INFORMATION_SCHEMA.COLUMNS  استفاده کردم :


INFORMATION_SCHEMA.COLUMNS یک VIEW است که قابلیت نمایش اطلاعات تمام ستون های تمام جداول و View های موجود در جداول را داراست.




Column name

Data type

Description

TABLE_CATALOG

nvarchar(128)

Table qualifier.

TABLE_SCHEMA

nvarchar(128)

Name of schema that contains the table.

TABLE_NAME

nvarchar(128)

Table name.

COLUMN_NAME

nvarchar(128)

Column name.

ORDINAL_POSITION

int

Column identification number.

Note: In SQL Server 2005, these column IDs are consecutive numbers.

COLUMN_DEFAULT

nvarchar(4000)

Default value of the column.

IS_NULLABLE

varchar(3)

Nullability of the column. If this column allows for NULL, this column returns YES. Otherwise, NO is returned.

DATA_TYPE

nvarchar(128)

System-supplied data type.

CHARACTER_MAXIMUM_LENGTH

int

Maximum length, in characters, for binary data, character data, or text and image data.

-1 for xml and large-value type data. Otherwise, NULL is returned. For more information, see Data Types (Transact-SQL).

CHARACTER_OCTET_LENGTH

int

Maximum length, in bytes, for binary data, character data, or text and image data.

-1 for xml and large-value type data. Otherwise, NULL is returned.

NUMERIC_PRECISION

tinyint

Precision of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.

NUMERIC_PRECISION_RADIX

smallint

Precision radix of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.

NUMERIC_SCALE

int

Scale of approximate numeric data, exact numeric data, integer data, or monetary data. Otherwise, NULL is returned.

DATETIME_PRECISION

smallint

Subtype code for datetime and SQL-92 interval data types. For other data types, NULL is returned.

CHARACTER_SET_CATALOG

nvarchar(128)

Returns master. This indicates the database in which the character set is located, if the column is character data or text data type. Otherwise, NULL is returned.

CHARACTER_SET_SCHEMA

nvarchar(128)

Always returns NULL.




در تصاویر زیر حاصل اجرای کوئری مربوطه در پایگاه داده AdventureWorks را مشاهده می کنید:


 SELECT * FROM INFORMATION_SCHEMA.COLUMNS



183_in1




183_in2




183_in3



183_in4





183_in5


اگر می خواهید فقط اطلاعات یک جدول را ببینید :
  
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Address'

موفق باشید.


تلگرام : https://t.me/GCC_co

اینستاگرام:  https://www.instagram.com/golden.cube.computing



۰ نظر موافقین ۱ مخالفین ۰ ۱۰ تیر ۹۶ ، ۱۲:۲۷
سارا زکی زاده
شنبه, ۳ تیر ۱۳۹۶، ۰۴:۲۰ ب.ظ

تفاوت بین Interface های Enumerator و Enumerable در C#

 

انواع  Enumerators  و  Enumerable :

تعریف :

"  Enumerator  شی ای است که قابلیت بازگرداندن  هر مورد از یک لیست و گروه داده ای را  به صورت یک به یک و ترتیبی که از آن درخواست میشود را دارد.  Enumerator به طبقه بندی موارد آگاه است و پیگیری می کند که کجای رشته قرار دارد.

و بعد از آن مقدار مورد جاری را بنا به در خواست باز می گرداند.

Enumerable یک نوع است که یک متد به نام GetEnumerator  دارد که این متد یک enumerator برمی گرداند برای بازگردانی مورد ها.

برای درک بهتر  Enumerators   و  Enumerable نگاهی به یک  مثال می اندازیم :

در مثال زیر ما یک آرایه شامل 5 المان تعریف می کنیم و بعد از ان از یک حلقه foreach برای نمایش مقادیر هر مورد.

class Program

   {

       static void Main()

       {

           int[] arr1 = { 1, 2, 3, 4, 5 }; // Define the array.

 

           foreach (int item in arr1) // Enumerate the elements.

               Console.WriteLine("Item value: {0}", item);

       }

   }

خروجی :

Item value: 1

Item value: 2

Item value: 3

Item value: 4

Item value: 5

 

                                            Enumerables

در مثال بالا :

·         شیء enumerator   را  به وسیله  تابع  GetEnumerator   صدا میزنیم .

·         هر مورد را از enumerator  در خواست می کند و به عنوان متغیر تکراری در کد قابل دسترس قرار می دهد.

 IEnumerator Interface :

 

اینترفیس  IEnumerable  توسط یک کلاس IEnumerable  پیاده سازی می شود.

اینترفیس IEnumerable   فقط یک متد دارد : GetEnumerator  که یک enumerator را برمی گرداند.

                                                     IEnumerator

- Current مقدار جایگاه جاری در رشته را برمی گرداند.

  - خصوصیت read-only است.

  - یک مقدار reference  از نوع داده ای را برمی گرداند پس شی می تواند هر جنسی داشته باشد.

  -MoveNext  متدی است که enumerator را به موقعیت بعدی مکانی پیش می برد. و یک مقدار بولین برمی گرداند که نشان دهنده معتبر بودن موقعیت بعدی و یا انتهای رشته می باشد.

  - اگر موقعیت بعدی معتبر باشد مقدار true است.

  - اگر موقعیت بعدی معتبر نباشد (فرا تر از انتهای رشته باشد) مقدار false است.

  - موقعیت ابتدایی enumerator  ، قبل از اولین مورد در رشته است. پس تابع MoveNext  باید قبل از اولین دسترسی به Current فراخوانی شود.

  - Reset  برای  بازنشانی مجدد موقعیت مکانی داخلی استفاده می شود.

مثال :


class Program

    {

        static void Main()

        {

            List<int> list = new List<int>();

            list.Add(1);

            list.Add(2);

            list.Add(3);

            list.Add(4);

            list.Add(5);

 

            List<int>.Enumerator e = list.GetEnumerator();

            Write(e);

        }

 

        static void Write(IEnumerator<int> e)

        {

            while (e.MoveNext())

            {

                int value = e.Current;

                Console.WriteLine(value);

            }

        }

    } 

 


   }  خروجی:

 

1
2
3
4
5



IEnumerable Interface :

یک کلاس enumerable ، یک  اینترفیس IEnumerable  را پیاده سازی می کند.

اینترفیس IEnumerable  تنها یک متد دارد: GetEnumerator که یک enumerator برمی گرداند.



    IEnumerable




using System.Collections;

 

//Implement the IEnumerable interface

class MyClass : IEnumerable

{

public IEnumerator GetEnumerator { ... }

...


} //Returns an object of type IEnumerator

 

 

 

 

 

using System.Collections;

class MyColors: IEnumerable

{

string[] Colors = { "Red", "Yellow", "Blue" };

public IEnumerator GetEnumerator()

{

return new ColorEnumerator(Colors);//An instance of the enumerator class

}


}


ادامه در پست بعدی .....

۰ نظر موافقین ۰ مخالفین ۰ ۰۳ تیر ۹۶ ، ۱۶:۲۰
سارا زکی زاده