🗊C# От основ к эффективному коду

Нажмите для полного просмотра!
C#  От основ к эффективному коду, слайд №1C#  От основ к эффективному коду, слайд №2C#  От основ к эффективному коду, слайд №3C#  От основ к эффективному коду, слайд №4C#  От основ к эффективному коду, слайд №5C#  От основ к эффективному коду, слайд №6C#  От основ к эффективному коду, слайд №7C#  От основ к эффективному коду, слайд №8C#  От основ к эффективному коду, слайд №9C#  От основ к эффективному коду, слайд №10C#  От основ к эффективному коду, слайд №11C#  От основ к эффективному коду, слайд №12C#  От основ к эффективному коду, слайд №13C#  От основ к эффективному коду, слайд №14C#  От основ к эффективному коду, слайд №15C#  От основ к эффективному коду, слайд №16C#  От основ к эффективному коду, слайд №17

Вы можете ознакомиться и скачать C# От основ к эффективному коду. Презентация содержит 17 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





C#
От основ к эффективному коду
Описание слайда:
C# От основ к эффективному коду

Слайд 2





Net Framework
История:
Java..
Одна платформа на множестве устройств

Состав:
1. Common Language Runtime (CLR)
2. Framework Class Library (FCL)
Компиляция:
Code -> Common Intermediate Language (IL) -> Processor Commands
Множество языков (C#, C++, J#, VB..) + Множество платформ (x86, a64, Alpha, PowerPC..)
Высокая скорость
Простота:
Сборка мусора
Визуальный редактор форм
Проверка безопасности типов
Простота развертки приложений, нет dll hell, есть GAC. Метаданные и код в одной сборке
Описание слайда:
Net Framework История: Java.. Одна платформа на множестве устройств Состав: 1. Common Language Runtime (CLR) 2. Framework Class Library (FCL) Компиляция: Code -> Common Intermediate Language (IL) -> Processor Commands Множество языков (C#, C++, J#, VB..) + Множество платформ (x86, a64, Alpha, PowerPC..) Высокая скорость Простота: Сборка мусора Визуальный редактор форм Проверка безопасности типов Простота развертки приложений, нет dll hell, есть GAC. Метаданные и код в одной сборке

Слайд 3





Базовые типы
Все типы производные от System.Object!
Int8, Int16, Int32, Int64, UInt8…
Single, Double
bool (Boolean)
Char, byte
String или string???
Object
Функции:
Не может быть в неймспейсе
Не может иметь параметров по умолчанию
Нет friend функций
using:
using Targem.Controls;
using ImageList = List< Image>; // аналог typedef
Описание слайда:
Базовые типы Все типы производные от System.Object! Int8, Int16, Int32, Int64, UInt8… Single, Double bool (Boolean) Char, byte String или string??? Object Функции: Не может быть в неймспейсе Не может иметь параметров по умолчанию Нет friend функций using: using Targem.Controls; using ImageList = List< Image>; // аналог typedef

Слайд 4





class/struct
Reference type (ссылочный тип, class):
Располагаются в куче и передается по ссылке (умный указатель в С++)
new выделяет для них память
Имеют дополнительные поля
Value type (размерный тип, struct, enum):
Значительно эффективнее, не имеют дополнительных полей, не делается разыменование
Располагается в разных местах (чаще в стеке), но передается по значению
new не выделяет память, а инициализирует структуру
Не обрабатываются сборщиком мусора
Упаковка – преобразование val -> ref:
	Int32 val = 10;
	Object obj = val;
	val = (Int32)obj;
	Дорогая операция!!!
Описание слайда:
class/struct Reference type (ссылочный тип, class): Располагаются в куче и передается по ссылке (умный указатель в С++) new выделяет для них память Имеют дополнительные поля Value type (размерный тип, struct, enum): Значительно эффективнее, не имеют дополнительных полей, не делается разыменование Располагается в разных местах (чаще в стеке), но передается по значению new не выделяет память, а инициализирует структуру Не обрабатываются сборщиком мусора Упаковка – преобразование val -> ref: Int32 val = 10; Object obj = val; val = (Int32)obj; Дорогая операция!!!

Слайд 5





class
Функции класса Object:
Type GetType()
string ToString()
int GetHashCode()
bool Equals(object obj)
Finalize

Видимость класса:
public, internal, private, sealed
Видимость типов, полей, методов:
public, internal, protected, private
Аттрибуты методов:
static, virtual, override, abstract
Сведения:
Нет множественного наследования, есть много интерфейсов
Равенство, тождество
Описание слайда:
class Функции класса Object: Type GetType() string ToString() int GetHashCode() bool Equals(object obj) Finalize Видимость класса: public, internal, private, sealed Видимость типов, полей, методов: public, internal, protected, private Аттрибуты методов: static, virtual, override, abstract Сведения: Нет множественного наследования, есть много интерфейсов Равенство, тождество

Слайд 6





struct
Важно:
Массив структур значительно эффективнее массива классов
		class IntClass        {   public Int32 value;   }
		struct IntStruct     {   public Int32 value;   }
Создание массива быстрее в 86 раз
Проход по массиву с записей в переменную быстрее в 5 раз
Если при работе с структурами придется преобразовывать к Object, то лучше делать class (ArrayList).
Enum:
	 1 Вариант: 
		public enum TestEnum{ One = 0, Two, Tree }
		TestEnum  t = TestEnum.One;
		Int32 it = (Int32)t;
	2 Вариант:
		public enum TestEnum : Int32 { One = 0, Two, Tree }
	3 Вариант:
		[ Flags ]
		public enum TestEnum{ One = 0x01, Two = 0x02, Tree  = 0x04}
Описание слайда:
struct Важно: Массив структур значительно эффективнее массива классов class IntClass { public Int32 value; } struct IntStruct { public Int32 value; } Создание массива быстрее в 86 раз Проход по массиву с записей в переменную быстрее в 5 раз Если при работе с структурами придется преобразовывать к Object, то лучше делать class (ArrayList). Enum: 1 Вариант: public enum TestEnum{ One = 0, Two, Tree } TestEnum t = TestEnum.One; Int32 it = (Int32)t; 2 Вариант: public enum TestEnum : Int32 { One = 0, Two, Tree } 3 Вариант: [ Flags ] public enum TestEnum{ One = 0x01, Two = 0x02, Tree = 0x04}

Слайд 7





Функции, свойства, аттрибуты
Функции:
	void	Func( ref Int32 v1, out Int32 v2 )	{     v1 = v2 = 10;    }
	Int32 v1 = 0, v2 = 0;
	Func( ref v1, out v2 );
	
Свойства:
	1 Вариант:
		private Int32	m_value;
		public Int32	Value{	get{ return m_value; }	set{ m_value = value; }	}
	2 Вариант:
		public Int32	Value{ get; set; }
	3 Вариант:
		private Int32[]	 m_arr ;
		public Int32	this[ Int32 index ] // свойство с параметром
		{
			get{ return m_arr[ index ]; }	
			set{ m_arr[ index ]= value; }	
		}
		obj[ 10 ] = 100;
Аттрибуты:
	[
		Category( “Object" ),
		DisplayName( “Some Value" ),
		Description( “This is description of value" ),
	]
	 public Int32	 Value{ get; set; }
Описание слайда:
Функции, свойства, аттрибуты Функции: void Func( ref Int32 v1, out Int32 v2 ) { v1 = v2 = 10; } Int32 v1 = 0, v2 = 0; Func( ref v1, out v2 ); Свойства: 1 Вариант: private Int32 m_value; public Int32 Value{ get{ return m_value; } set{ m_value = value; } } 2 Вариант: public Int32 Value{ get; set; } 3 Вариант: private Int32[] m_arr ; public Int32 this[ Int32 index ] // свойство с параметром { get{ return m_arr[ index ]; } set{ m_arr[ index ]= value; } } obj[ 10 ] = 100; Аттрибуты: [ Category( “Object" ), DisplayName( “Some Value" ), Description( “This is description of value" ), ] public Int32 Value{ get; set; }

Слайд 8





Базовые операции
Операции:
*/% ||&&<>= - базовые операции как в С++
return obj1 ?? Obj2; // return obj1!=null ? obj1 : obj2;
Приведение типов:
Явное приведение типа генерирует исключение при ошибке
is – проверка класса на принадлижность типу
as – безопасное приведение к типу. Вернет null, если привести не удалось
MyStruct str = (MyStruct)obj; // приведение типов к структуре или Enum
Описание слайда:
Базовые операции Операции: */% ||&&<>= - базовые операции как в С++ return obj1 ?? Obj2; // return obj1!=null ? obj1 : obj2; Приведение типов: Явное приведение типа генерирует исключение при ошибке is – проверка класса на принадлижность типу as – безопасное приведение к типу. Вернет null, если привести не удалось MyStruct str = (MyStruct)obj; // приведение типов к структуре или Enum

Слайд 9





Обработка исключений
Описание слайда:
Обработка исключений

Слайд 10





Работа со строками
String:
Split, IndexOf, Trim, Remove, Replace…
If( str. Equals( “name” ) || str == “name” ) // сравнение
String str = @”hello\no”; // все символы строки используются как есть
String res = “name: “ + strName + “ age: “ + age; // правильно, но очень медленно
String.Format( “{0} {1}”, strName, age ); // в 2 раза быстрее предыдущего примера
Convert.ToString( intValue ); // эффективнее чем intValue.ToString();
if( String.IsNullOrEmpty( name ) ) // проверка на null и нулевой строки
StringBuilder: - для формирования длинны строк
StringBuilder sb = new StringBuilder();
sb.Append(..); // добавление элемента в конец
sb.AppendLine(..); // добавление элемента в конец + перевод строки
Описание слайда:
Работа со строками String: Split, IndexOf, Trim, Remove, Replace… If( str. Equals( “name” ) || str == “name” ) // сравнение String str = @”hello\no”; // все символы строки используются как есть String res = “name: “ + strName + “ age: “ + age; // правильно, но очень медленно String.Format( “{0} {1}”, strName, age ); // в 2 раза быстрее предыдущего примера Convert.ToString( intValue ); // эффективнее чем intValue.ToString(); if( String.IsNullOrEmpty( name ) ) // проверка на null и нулевой строки StringBuilder: - для формирования длинны строк StringBuilder sb = new StringBuilder(); sb.Append(..); // добавление элемента в конец sb.AppendLine(..); // добавление элемента в конец + перевод строки

Слайд 11





Делегаты и лямбда функции
Делегат и лямбда функция:
delegate int Del( int v );
	void RegisterCallback(Del del ); // передача делегата
Del del = x => x *x; // создание делегата через лямбда функцию

Способы передачи функций:
void ActionFunc()
{
        // do something
}
obj.RegisterCallback( ActionFunc ); // функция переданная делегатом
obj.RegisterCallback( delegate() // анонимный делегат, в 3 раза быстрее предыдущего
	{
     	   // do something
	} );

obj.RegisterCallback( () => { /*do something*/} ); // лямбда функция Одинаково с предыдущим
Описание слайда:
Делегаты и лямбда функции Делегат и лямбда функция: delegate int Del( int v ); void RegisterCallback(Del del ); // передача делегата Del del = x => x *x; // создание делегата через лямбда функцию Способы передачи функций: void ActionFunc() {         // do something } obj.RegisterCallback( ActionFunc ); // функция переданная делегатом obj.RegisterCallback( delegate() // анонимный делегат, в 3 раза быстрее предыдущего {         // do something } ); obj.RegisterCallback( () => { /*do something*/} ); // лямбда функция Одинаково с предыдущим

Слайд 12





Контейнеры
Массивы:
Int32[] arr = new Int32[ count ];
Int32[] arr = new Int32[] { 1, 2, 3, 4, 5 };
Int32[] arr = { 1, 2, 3, 4, 5};
Int32[,] arr = new Int32[2, 3];
Int32[,] arr = { { 1, 2, 3 }, { 4, 5, 6 } }; // массивы в виде матриц
Int32[][] arr  = new Int32[6][]; // массивы разной размерности для каждой строки
arr – это объект класса Array
Array.Resize, Copy, Sort, Find
Массивы структур значительно эффективнее массивов классов
Описание слайда:
Контейнеры Массивы: Int32[] arr = new Int32[ count ]; Int32[] arr = new Int32[] { 1, 2, 3, 4, 5 }; Int32[] arr = { 1, 2, 3, 4, 5}; Int32[,] arr = new Int32[2, 3]; Int32[,] arr = { { 1, 2, 3 }, { 4, 5, 6 } }; // массивы в виде матриц Int32[][] arr = new Int32[6][]; // массивы разной размерности для каждой строки arr – это объект класса Array Array.Resize, Copy, Sort, Find Массивы структур значительно эффективнее массивов классов

Слайд 13





Контейнеры
List< Int32 >:
	List< Int32 > arr = new List< Int32 >( count );
	Int32 val = arr[ 10 ];
	arr.Add(); Remove, Clear, Sort, IndexOf
ArrayList  List< Object >
Dictionary< key, value > (Hashtable):
	Dictionary< String, SomeClass > arr = new Dictionary< String, SomeClass >
	arr[ “name” ] = “newValue”; // установка значения
	String val = arr[ “name” ]; // получение значения
Описание слайда:
Контейнеры List< Int32 >: List< Int32 > arr = new List< Int32 >( count ); Int32 val = arr[ 10 ]; arr.Add(); Remove, Clear, Sort, IndexOf ArrayList  List< Object > Dictionary< key, value > (Hashtable): Dictionary< String, SomeClass > arr = new Dictionary< String, SomeClass > arr[ “name” ] = “newValue”; // установка значения String val = arr[ “name” ]; // получение значения

Слайд 14





Контейнеры
Компактная обработка массива:
list.ForEach( item => item.DoSomething() );
SomeClass item = list.Find( item => item.Name == name );
List<SomeClass> items = list.FindAll( item => item.Value > 10 );
bool res = list.TrueForAll( item => item.IsValid );
foreach( var pair in dict ) лучше чем так 
foreach( KeyValuePair< String, SomeClass > pair in dict )
Описание слайда:
Контейнеры Компактная обработка массива: list.ForEach( item => item.DoSomething() ); SomeClass item = list.Find( item => item.Name == name ); List<SomeClass> items = list.FindAll( item => item.Value > 10 ); bool res = list.TrueForAll( item => item.IsValid ); foreach( var pair in dict ) лучше чем так foreach( KeyValuePair< String, SomeClass > pair in dict )

Слайд 15





Нужные компоненты
Math:
Math.Abs, Min, Max, Sin, Cos…
Файлы:
System.Xml: XmlDocument, XmlNode, XmlReader, XmlWriter…
System.IO: File, Path, Directory, StreamReader, StreamWriter, FileStream, MemoryStream…
Элементы GUI:
System.Windows.Forms
System.Drawing ( GDI, GDI+)
Reflection (RTTI)
Linq
Actions
…
Описание слайда:
Нужные компоненты Math: Math.Abs, Min, Max, Sin, Cos… Файлы: System.Xml: XmlDocument, XmlNode, XmlReader, XmlWriter… System.IO: File, Path, Directory, StreamReader, StreamWriter, FileStream, MemoryStream… Элементы GUI: System.Windows.Forms System.Drawing ( GDI, GDI+) Reflection (RTTI) Linq Actions …

Слайд 16





Рекомендуемая литература
Программирование на платформе Microsoft .NET Framework, Рихтер Дж. [ Русская редакция, 2003]
Professional C#, Simon Robinson [ Wrox Press, 2001]
http://rsdn.ru – полезные статьи на русском
http://www.codeproject.com/ - много примеров реализации, очень помогает для создания своих визуальных компонентов
Описание слайда:
Рекомендуемая литература Программирование на платформе Microsoft .NET Framework, Рихтер Дж. [ Русская редакция, 2003] Professional C#, Simon Robinson [ Wrox Press, 2001] http://rsdn.ru – полезные статьи на русском http://www.codeproject.com/ - много примеров реализации, очень помогает для создания своих визуальных компонентов

Слайд 17





Спасибо за внимание
Описание слайда:
Спасибо за внимание



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