Skip to content

Commit a439843

Browse files
committed
added reflection example
1 parent dae41cc commit a439843

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

03_CsharpGrundlagenI.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,50 @@ public class Program
498498
```
499499
@LIA.eval(`["main.cs"]`, `mcs main.cs`, `mono main.exe`)
500500

501+
502+
Min und Max Werte der Datentypen können über die statischen Eigenschaften `MinValue` und `MaxValue` abgefragt werden. Diese sind in der Klasse des jeweiligen Datentyps definiert.
503+
Über Reflection können diese Informationen auch zur Laufzeit abgefragt werden, ohne den Datentyp explizit zu kennen.
504+
505+
```csharp DataTypes_mit_Reflection.cs
506+
using System;
507+
using System.Reflection;
508+
509+
public class Program
510+
{
511+
static void Main(string[] args)
512+
{
513+
int i = 5;
514+
PrintTypeLimits(i);
515+
516+
uint u = 10;
517+
PrintTypeLimits(u);
518+
519+
long l = 20;
520+
PrintTypeLimits(l);
521+
}
522+
523+
static void PrintTypeLimits(object value)
524+
{
525+
Type type = value.GetType();
526+
Console.WriteLine(type);
527+
528+
FieldInfo minValueField = type.GetField("MinValue", BindingFlags.Public | BindingFlags.Static);
529+
FieldInfo maxValueField = type.GetField("MaxValue", BindingFlags.Public | BindingFlags.Static);
530+
531+
if (minValueField != null && maxValueField != null)
532+
{
533+
Console.WriteLine(minValueField.GetValue(null));
534+
Console.WriteLine(maxValueField.GetValue(null));
535+
}
536+
else
537+
{
538+
Console.WriteLine("Keine MinValue/MaxValue Eigenschaften für diesen Typ gefunden.");
539+
}
540+
}
541+
}
542+
```
543+
@LIA.eval(`["main.cs"]`, `mcs main.cs`, `mono main.exe`)
544+
501545
{{1-2}}
502546
********************************************************************************
503547

0 commit comments

Comments
 (0)