Ich bin grade über etwas gestolpert, dass ich nicht so ganz nachvollziehen kann. Folgender Code:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
bool test;
try
{
test = true;
}
catch
{
test = false;
}
finally
{
if( test ) // error CS0165: Use of unassigned local variable 'test'
{
}
}
|
Ich finde es schon logisch, das dieser Fehler erzeugt wird, da der Compiler sicher nicht überprüft, welche Funktionen vorher/oder ob überhaupt irgendwelche Funktionen vorher in deinem Try-Block ausgeführt werden.
Ein Beispiel:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
bool test;bool test2;
try
{ test2 = 5;
test = true;
}
catch
{
test = false;
}
finally
{
if( test ) // error CS0165: Use of unassigned local variable 'test'
{
}
}
|
Hier würde beispielsweise schon vor der Zuweisung von test in den Finally-Block gesprungen werden, somit könnte es theoretisch möglich sein, dass an dieser Stelle die Variable nicht zugewiesen wurde.
Ich finde es also schon logisch, wie der Compiler das hier gemacht hat.