Classes

advertisement
C# Language & .NET
Platform
nd
2 Lecture
http://d3s.mff.cuni.cz/~jezek
Pavel Ježek
pavel.jezek@d3s.mff.cuni.cz
CHARLES UNIVERSITY IN PRAGUE
faculty of mathematics and physics
Some of the slides are based on University of Linz .NET presentations.
© University of Linz, Institute for System Software, 2004
published under the Microsoft Curriculum License
(http://www.msdnaa.net/curriculum/license_curriculum.aspx)
Putting C# into Perspective
C++
C#
Java
Powerful (e.g.
multiple
inheritance)
Productive (e.g. lot
of syntactic sugar)
Simple
Fast
Safe + Less errors in Safe
team development,
etc. (many features
different from Java)
Not slow
Interoperable
(Source portable)
(Binary portable)
Binary portable
Implicitly Typed Local Variables
Examples:
var
var
var
var
var
i = 5;
s = "Hello";
d = 1.0;
numbers = new int[] {1, 2, 3};
orders = new Dictionary<int,Order>();
Are equivalent to:
int i = 5;
string s = "Hello";
double d = 1.0;
int[] numbers = new int[] {1, 2, 3};
Dictionary<int,Order> orders = new Dictionary<int,Order>();
Errors:
var x;
var y = {1, 2, 3};
var z = null;
// Error, no initializer to infer type from
// Error, collection initializer not permitted
// Error, null type not permitted
Exception Hierarchy (excerpt)
Exception
SystemException
ArithmeticException
DivideByZeroException
OverflowException
...
NullReferenceException
IndexOutOfRangeException
InvalidCastException
...
ApplicationException
... user-defined exceptions
...
IOException
FileNotFoundException
DirectoryNotFoundException
...
WebException
...
try Statement
FileStream s = null;
try {
s = new FileStream(curName, FileMode.Open);
...
} catch (FileNotFoundException e) {
Console.WriteLine("file {0} not found", e.FileName);
} catch (IOException) {
Console.WriteLine("some IO exception occurred");
} catch {
Console.WriteLine("some unknown error occurred");
} finally {
if (s != null) s.Close();
}
catch clauses are checked in sequential order.
finally clause is always executed (if present).
Exception parameter name can be omitted in a catch clause.
Exception type must be derived from System.Exception.
If exception parameter is missing, System.Exception is assumed.
System.Exception
Properties
e.Message
e.StackTrace
e.Source
e.TargetSite
...
e.InnerException
the error message as a string;
set by new Exception(msg);
trace of the method call stack as a string
the application or object that threw the exception
the method object that threw the exception
should be always set if rethrowing another exception
Methods
e.ToString()
...
returns the name of the exception and the StackTrace
Download