🗊Презентация Способы передачи аргументов в метод в С#

Нажмите для полного просмотра!
Способы передачи аргументов в метод в С#, слайд №1Способы передачи аргументов в метод в С#, слайд №2Способы передачи аргументов в метод в С#, слайд №3Способы передачи аргументов в метод в С#, слайд №4Способы передачи аргументов в метод в С#, слайд №5Способы передачи аргументов в метод в С#, слайд №6Способы передачи аргументов в метод в С#, слайд №7Способы передачи аргументов в метод в С#, слайд №8Способы передачи аргументов в метод в С#, слайд №9Способы передачи аргументов в метод в С#, слайд №10Способы передачи аргументов в метод в С#, слайд №11Способы передачи аргументов в метод в С#, слайд №12Способы передачи аргументов в метод в С#, слайд №13Способы передачи аргументов в метод в С#, слайд №14Способы передачи аргументов в метод в С#, слайд №15

Вы можете ознакомиться и скачать презентацию на тему Способы передачи аргументов в метод в С#. Доклад-сообщение содержит 15 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Способы передачи аргументов в метод
При передаче по значению метод получает копии значений аргументов, и операторы метода работают с этими копиями. 
При передаче по ссылке (по адресу) метод получает копии адресов аргументов и осуществляет доступ к аргументам по этим адресам.
Описание слайда:
Способы передачи аргументов в метод При передаче по значению метод получает копии значений аргументов, и операторы метода работают с этими копиями. При передаче по ссылке (по адресу) метод получает копии адресов аргументов и осуществляет доступ к аргументам по этим адресам.

Слайд 2





Типы параметров
В С# четыре типа параметров:
 параметры-значения - для исходных данных метода;
 параметры-ссылки (ref) - для изменения аргумента;
 выходные параметры (out) – для формирования аргумента;
 параметры-массивы (params) – для переменного кол-ва аргументов.
Описание слайда:
Типы параметров В С# четыре типа параметров: параметры-значения - для исходных данных метода; параметры-ссылки (ref) - для изменения аргумента; выходные параметры (out) – для формирования аргумента; параметры-массивы (params) – для переменного кол-ва аргументов.

Слайд 3





Передача аргумента по значению
Описание слайда:
Передача аргумента по значению

Слайд 4






Пример: счетчик 
class Counter
{    public void Inc(int delta)
      {
            n += delta;
       }
        public override string ToString() { return n.ToString(); }
        int n;
}
class Program
{     static void Main(string[] args)
       {    Counter num = new Counter();
             num.Inc(4);
             int a = 3;
             num.Inc(2*a);
             Console.WriteLine("значение счетчика " + num);
}}
Описание слайда:
Пример: счетчик class Counter { public void Inc(int delta) { n += delta; } public override string ToString() { return n.ToString(); } int n; } class Program { static void Main(string[] args) { Counter num = new Counter(); num.Inc(4); int a = 3; num.Inc(2*a); Console.WriteLine("значение счетчика " + num); }}

Слайд 5





Передача аргумента по ссылке (ref, out)
Описание слайда:
Передача аргумента по ссылке (ref, out)

Слайд 6





Пример: параметры-значения и ссылки ref
using System;
namespace ConsoleApplication1
{   class Class1
    {   static void P( int a, ref int b )
        {
            a = 44; b = 33;
            Console.WriteLine( "внутри метода {0} {1}", a, b );
        }
        static void Main()
        {
            int a = 2, b = 4;
            Console.WriteLine( "до вызова     {0} {1}", a, b );
            P( a, ref b );
            Console.WriteLine( "после вызова  {0} {1}", a, b );
}}}
Описание слайда:
Пример: параметры-значения и ссылки ref using System; namespace ConsoleApplication1 { class Class1 { static void P( int a, ref int b ) { a = 44; b = 33; Console.WriteLine( "внутри метода {0} {1}", a, b ); } static void Main() { int a = 2, b = 4; Console.WriteLine( "до вызова {0} {1}", a, b ); P( a, ref b ); Console.WriteLine( "после вызова {0} {1}", a, b ); }}}

Слайд 7





Пример: выходные параметры out
using System;
namespace ConsoleApplication1
{   class Class1
    {   static void P( int x, out int y ) 
        {
            x = 44; y = 33;
            Console.WriteLine( "внутри метода {0} {1}", x, y );
        }
        static void Main()
        {
            int a = 2, b;         // инициализация b не требуется
            P( a, out b );
            Console.WriteLine( "после вызова  {0} {1}", a, b );
}}}
Описание слайда:
Пример: выходные параметры out using System; namespace ConsoleApplication1 { class Class1 { static void P( int x, out int y ) { x = 44; y = 33; Console.WriteLine( "внутри метода {0} {1}", x, y ); } static void Main() { int a = 2, b; // инициализация b не требуется P( a, out b ); Console.WriteLine( "после вызова {0} {1}", a, b ); }}}

Слайд 8






Пример: счетчик (параметр out) 
class Counter
{     public bool Sync(out int x)
      {    x = n;
            return n==0 ? false : true ;
       }
       public void Set( int start ) { n = start; } 
       int n; 
        ...
}
class Program
{     static void Main(string[] args)
       {    Counter num1 = new Counter();
             Counter num2 = new Counter();
             ... 
             int temp;
             if ( num1.Sync(out temp) ) num2.Set(temp);
             …
}}
Описание слайда:
Пример: счетчик (параметр out) class Counter { public bool Sync(out int x) { x = n; return n==0 ? false : true ; } public void Set( int start ) { n = start; } int n; ... } class Program { static void Main(string[] args) { Counter num1 = new Counter(); Counter num2 = new Counter(); ... int temp; if ( num1.Sync(out temp) ) num2.Set(temp); … }}

Слайд 9





Summary: Правила применения параметров
Для параметров-значений используется передача по значению. Этот способ применяется для исходных данных метода.
При вызове метода на месте аргумента параметра-значения может быть выражение (а также его частные случаи — переменная или константа). Должно существовать неявное преобразование типа выражения к типу параметра.
Параметры-ссылки и выходные параметры передаются по адресу. Этот способ применяется для передачи побочных результатов метода.
При вызове метода на месте аргумента параметра-ссылки ref может находиться только имя инициализированной переменной точно того же типа. Перед именем параметра и аргумента указывается ключевое слово ref. 
При вызове метода на месте выходного параметра out может находиться только имя переменной точно того же типа. Ее инициализация не требуется. Перед именем параметра и аргумента указывается ключевое слово out.
Описание слайда:
Summary: Правила применения параметров Для параметров-значений используется передача по значению. Этот способ применяется для исходных данных метода. При вызове метода на месте аргумента параметра-значения может быть выражение (а также его частные случаи — переменная или константа). Должно существовать неявное преобразование типа выражения к типу параметра. Параметры-ссылки и выходные параметры передаются по адресу. Этот способ применяется для передачи побочных результатов метода. При вызове метода на месте аргумента параметра-ссылки ref может находиться только имя инициализированной переменной точно того же типа. Перед именем параметра и аргумента указывается ключевое слово ref. При вызове метода на месте выходного параметра out может находиться только имя переменной точно того же типа. Ее инициализация не требуется. Перед именем параметра и аргумента указывается ключевое слово out.

Слайд 10





Методы с переменным количеством аргументов 
class Class1 
{     public static double Average( params int[] a ) 
       {  if ( a.Length == 0 ) 
                      throw new Exception( "Недостаточно аргументов");
            double sum = 0;
            foreach ( int elem in a ) sum += elem;
            return sum / a.Length;
        }
       static void Main()
       {   try   
            {  short z = 1, e = 13, w = 4;
                Console.WriteLine( Average( z, e, w ) );         //  6
                byte v = 18;
                Console.WriteLine( Average( z, e, w, v) );      //  9
                int[] b = { -11, -4, 12, 14, 32, -1, 28 };
                Console.WriteLine( Average( b ) );                 // 38
                Console.WriteLine( Average() );   // Недостаточно аргументов
            }
            catch( Exception e ) { Console.WriteLine( e.Message ); return; }
            catch                      { Console.WriteLine( "ой-кшмр" ); return; }
    }}
Описание слайда:
Методы с переменным количеством аргументов class Class1 { public static double Average( params int[] a ) { if ( a.Length == 0 ) throw new Exception( "Недостаточно аргументов"); double sum = 0; foreach ( int elem in a ) sum += elem; return sum / a.Length; } static void Main() { try { short z = 1, e = 13, w = 4; Console.WriteLine( Average( z, e, w ) ); // 6 byte v = 18; Console.WriteLine( Average( z, e, w, v) ); // 9 int[] b = { -11, -4, 12, 14, 32, -1, 28 }; Console.WriteLine( Average( b ) ); // 38 Console.WriteLine( Average() ); // Недостаточно аргументов } catch( Exception e ) { Console.WriteLine( e.Message ); return; } catch { Console.WriteLine( "ой-кшмр" ); return; } }}

Слайд 11





Рекурсивные методы 
Рекурсивным называется метод, который вызывает сам себя (прямая рекурсия). Косвенная рекурсия - когда два или более метода вызывают друг друга. 
Для завершения вычислений каждый рекурсивный метод должен содержать хотя бы одну нерекурсивную ветвь алгоритма, заканчивающуюся оператором возврата. 
long fact( long n ) {
    if ( n == 0 || n == 1 ) return 1;        // нерекурсивная ветвь
    return ( n * fact( n – 1 ) );                   // рекурсивная ветвь
}
… long m = fact(4);
// или:
long fact( long n ) { return ( n > 1 ) ? n * fact( n – 1 ) : 1; }
Описание слайда:
Рекурсивные методы Рекурсивным называется метод, который вызывает сам себя (прямая рекурсия). Косвенная рекурсия - когда два или более метода вызывают друг друга. Для завершения вычислений каждый рекурсивный метод должен содержать хотя бы одну нерекурсивную ветвь алгоритма, заканчивающуюся оператором возврата. long fact( long n ) { if ( n == 0 || n == 1 ) return 1; // нерекурсивная ветвь return ( n * fact( n – 1 ) ); // рекурсивная ветвь } … long m = fact(4); // или: long fact( long n ) { return ( n > 1 ) ? n * fact( n – 1 ) : 1; }

Слайд 12





Характеристики рекурсии
Достоинство рекурсии: компактность записи.
Недостатки:  опасность переполнения стека; расход времени и памяти на повторные вызовы метода и передачу ему копий параметров.
Рекурсивные методы используются в основном для работы с рекурсивными структурами данных, например,  бинарными деревьями.
Описание слайда:
Характеристики рекурсии Достоинство рекурсии: компактность записи. Недостатки: опасность переполнения стека; расход времени и памяти на повторные вызовы метода и передачу ему копий параметров. Рекурсивные методы используются в основном для работы с рекурсивными структурами данных, например, бинарными деревьями.

Слайд 13





Ключевое слово this 
Чтобы обеспечить работу метода с полями того объекта, для которого он был вызван, в метод автоматически передается скрытый параметр this, в котором хранится ссылка на вызвавший функцию объект.
Описание слайда:
Ключевое слово this Чтобы обеспечить работу метода с полями того объекта, для которого он был вызван, в метод автоматически передается скрытый параметр this, в котором хранится ссылка на вызвавший функцию объект.

Слайд 14





Использование явного this
В явном виде параметр this применяется: 
1) чтобы возвратить из метода ссылку на вызвавший объект:
class Demo    
{      double y;
        public Demo T()    { return this; }
// 2) для идентификации поля, если его имя совпадает с
//     именем параметра метода:
        public void Set_y( double y ) { this.y = y; }
}
Описание слайда:
Использование явного this В явном виде параметр this применяется: 1) чтобы возвратить из метода ссылку на вызвавший объект: class Demo { double y; public Demo T() { return this; } // 2) для идентификации поля, если его имя совпадает с // именем параметра метода: public void Set_y( double y ) { this.y = y; } }

Слайд 15






Пример: счетчик (this) 
class Counter
{     public bool Sync(out int x)
      {    x = n;
            return n==0 ? false : true ;
       }
       public void Set( int start ) { n = start; } 
       int n; 
        ...
}
class Program
{     static void Main(string[] args)
       {    Counter num1 = new Counter();
             Counter num2 = new Counter();
             ... 
             int temp;
             if ( num1.Sync(out temp) ) num2.Set(temp);
             …
}}
Описание слайда:
Пример: счетчик (this) class Counter { public bool Sync(out int x) { x = n; return n==0 ? false : true ; } public void Set( int start ) { n = start; } int n; ... } class Program { static void Main(string[] args) { Counter num1 = new Counter(); Counter num2 = new Counter(); ... int temp; if ( num1.Sync(out temp) ) num2.Set(temp); … }}



Похожие презентации
Mypresentation.ru
Загрузить презентацию