SlideServe
Menu
Préférences
© SlideServe · v2026

Microsoft .NET

kalkin avatar
21 diapositives · 355 Views · Oct 23, 2014

Microsoft .NET. Вторая лекция. Reference and value types. public class RefType { } public struct ValueType : IDisposable { public int A, B; public ValueType( int a, int b) { A = a; B = b; } public void Dispose() { /* Do some work */ } }. Встроенные типы.

Microsoft .NET - slide 1
01 / 21Microsoft .NET
1 / 17

Télécharger la présentation

Microsoft .NET
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Microsoft .NET Вторая лекция

  2. Reference and value types public class RefType { } public struct ValueType : IDisposable { public int A, B; public ValueType(int a, int b) { A = a; B = b; } public void Dispose() { /* Do some work */ } }

  3. Встроенные типы Value types: bool b; int i; byte by; uint ui; sbyte sby;long l; char c;ulong ul; decimal dec;short s; double d;ushort us; float f; Reference types: object o;string str;

  4. Enums public enum MyEnum { MyValue1, MyValue2, MyValue3} //... MyEnum val = MyEnum.MyValue1; //... switch(val) { case MyEnum.MyValue1: //... break; case MyEnum.MyValue2: //... break; }

  5. Массивы int[]arr = new int[4]; int[]arr2 = new int[]{1, 2, 3 }; int[,]arr_2d = new int[,] { {1, 3}, {5, 7} }; int[][]arr_jagged = new int[3][]; for (int i = 0; i < arr_jagged.Length; ++i) arr_jagged[i] = new int[i + 10];

  6. Методы с переменным количеством параметров public static int Max(params int[]numbers) { if (numbers.Length < 1) throw new ArgumentException(); int cur_max = numbers[0]; foreach (int number in numbers) cur_max = Math.Max(cur_max, number); return cur_max; } // ... int i = Max(3, 5, 4, 234); int[]arr = new int[] { 2, 3, 6, 3, 98 }; i = Max(arr);

  7. Перегрузка операторов public struct Complex { public double Re, Im; public Complex(double re, double im) { Re = re; Im = im; } public Complex(double re) : this(re, 0) { } public static Complex operator + (Complex l, Complex r) { return new Complex(l.Re + r.Re, l.Im + r.Im); } public static implicit operator Complex(double re) { return new Complex(re); } }

  8. Использованиеперегруженных операторов static void Main(string[]args) { Complex z1 = 0; Complex z2 = z1 + z1.Re ; }

  9. Generics public class Wrapper<T> { private readonly T _val; public Wrapper(T val) { _val = val; } public static implicit operator T(Wrapper<T> wrapper) { return wrapper._val;} public static implicit operator Wrapper<T> (T val) { return new Wrapper<T>(val); } }

  10. Generics public T Max<T>(params T[] values) where T : IComparable<T> { if (values.Length < 1) throw new ArgumentException(); T cur_max = values[0]; foreach (T val in values) if (cur_max.CompareTo(val) < 0) cur_max = val; return cur_max; }

  11. Оператор foreach static void Main(string[]args) { foreach (string s in args) Console.WriteLine(s); }

  12. IEnumerable interface interface IEnumerable { IEnumerator GetEnumerator(); } interface IEnumerator { public bool MoveNext(); public void Reset(); public object Current { get; } }

  13. Delegates public class GDIContext {/* ... */ } public class Window { public delegate void OnPaintProc(GDIContext gdi); public OnPaintProc OnPaint; // ... } private static void DrawCircle(GDIContext gdi) { /* ... */ } static void Main(string[]args) { Window wnd = new Window(); wnd.OnPaint += DrawCircle; }

  14. Exceptions try { throw new Exception("Hello, world!!!"); } catch(Exception ex) { Console.WriteLine(ex.Message); } finally { Console.WriteLine("Finally block executed."); }

  15. IDisposable interface public class Device : IDisposable { public Device() { /* ... */ } public void Dispose() { GC.SuppressFinalize(this); /* ... */ } ~Device() { Dispose(); } }

  16. Оператор using using (Device dev = new Device()) { // ... throw new Exception("Hello, world!!!"); }

  17. Reflection • Assemblies • MyClassLibrary.dll • MyExecutable.exe • Types • MyClassLibrary.SomeNamespace.MyClass • MyClassLibrary.SomeNamespace.MyClass.Nested • Methods, Properties, etc • MyClassLibrary.SomeNamespace.MyClass.DoWork() • MyClassLibrary.SomeNamespace.MyClass.SomeValue

  18. Reflection static void PrintMethods(Type type) { foreach(MethodInfo method in type.GetMethods()) { Console.WriteLine(method); } } static void Main(string[]args) { PrintMethods(typeof(int)); }

  19. Attributes class EnumValueAttribute : Attribute { private readonly string _valueName; public EnumValueAttribute(string valueName) { _valueName = valueName; } public string ValueName { get { return _valueName; } } }

  20. Attributes public enum WindowMessage { [EnumValue("Изменение размеров")]Resize, [EnumValue("Перерисовка")]Paint, [EnumValue("Нажатие кнопки")]KeyDown } [Serializable] public class MyClass { [NonSerialized] protected int i; public double D; }

  21. Reflection.Emit Возможность создавать во время выполнения новые • Сборки • Типы • Методы • и т.д. А также добавлять новые сущности к уже существующим