2. Applications
• Console Windows apps
• Windows Forms
• Web services, WCF services
• Web forms
• ASP.NET MVC apps
• Windows services
• Libraries
3. Assembly
• Is a deployment unit
• .EXE or .DLL
• Contains manifest + code
(metadata tables + IL)
4. Types
Can contain:
• Constant
• Field
• Instance constructor
• Type constructor
• Method. Method is not virtual by default.
Virtual, new , override, sealed, abstract
5. Types (cont’d)
• Property. Can be virtual
• Overloaded operator
• Conversion operator
• Event. Can be virtual
• Type
6. Access modifiers
• Private
• Protected (Family)
• Internal
• Family and assembly -- Not supported in C#
• Family or assembly (protected internal)
• Public
8. Object lifetime
• Allocate memory. Fill it with 0x00.
• Init memory -- constructor.
• Use the object -- call methods, access fields.
• Cleanup.
• Deallocate memory (only GC is responsible for
this).
9. Object References
• CLR knows about all references to objects.
• Root reference (in active local var or in static
field).
• Non-root reference (in instance field)
10. Finalization
• Mechanism that allows the object to correctly
cleanup itself before GC releases memory.
• Time when finalizers are called is
undetermined.
• Order in which finalizers are called is
undetermined.
• Partially constructed objects are also finalized
12. What are Exceptions?
• An exception is any error condition or
unexpected behavior encountered by an
executing program.
• In the .NET Framework, an exception is an object
that inherits from the Exception Class class.
• The exception is passed up the stack until the
application handles it or the program terminates.
13. Use Exceptions or not use exceptions?
-
• Вони невидимі з викликаючого коду.
• Створюються непередбачувані точки виходу з метода.
• Exceptions повільні. (exceptions use resources only when an exception occurs.)
+
• Зручність використання.
• Інформативність отриманих помилок більша по відношенні до
статус-кодів.
• Принцип використання. Throw на самий верхній рівень.
• Більш елегантні архітектурні рішення та зменшення часу
розробки.
14. C# Exception handling
• try…catch…finally
• throw
• Catch as high as you can
• try{ }
catch(Exception1){ /*exception1 handler*/ }
catch(Exception2) { /*exception2 handler*/ }
catch(Exception) { /*exception handler*/ }
15. IDisposable
• The primary use of this interface is to release
unmanaged resources.
• When calling a class that implements the
IDisposable interface, use the try/finally
pattern to make sure that unmanaged
resources are disposed of even if an exception
interrupts your application.
16. Working with streams
var fileStream = new FileStream(@"PathTofile", FileMode.Open, FileAccess.Read);
try
{
//Note: read from file stream here
}
finally
{
fileStream.Dispose();
}
//Note: you can use file stream here, but this is bad idea
using (var fileStream = new FileStream(@"PathTofile", FileMode.Open, FileAccess.Read))
{
//Note: read from file stream here
}
//Note: fileStream is not accessible here
17. Attributes
• Attributes provide a powerful method of
associating declarative information with C#
code (types, methods, properties, and so
forth).