Feedback

C# - Gaga-Methode für zufällige Ergebnisse bestimmter Länge eines Typs

Veröffentlicht von am 14.11.2015
(0 Bewertungen)
Diese Methode dient dazu, zufällige Ergebnisse für einen Datentyp zu erstellen.

Gaga gaga = new Gaga();
gaga.get<DATENTYP>(LÄNGE)


Console.WriteLine(gaga.get<int>(1));
Console.WriteLine(gaga.get<decimal>(2));
Console.WriteLine(gaga.get<float>(2));
Console.WriteLine(gaga.get<double>(8));
Console.WriteLine(gaga.get<int>(3));
Console.WriteLine(gaga.get<bool>());
Console.WriteLine(gaga.get<char>(7));
Console.WriteLine(gaga.get<string>(8));


Bei numerischen Werten mit Nachkommastelle bezieht sich die Länge auf die Vorkommastelle
GFU-Schulungen  [Anzeige]

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

using System;
using System.Linq;

namespace Project
{

    class Gaga
    {
        readonly Random rnd = new Random();
        const string CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

        public dynamic get<T>(int length = 0)
        {

            if (length < 0)
                throw new ArgumentOutOfRangeException("length");
            else if(length == 0)
                length = rnd.Next(0,20);

            var type = typeof(T);

            if (isNumeric(type))
            {
                length -= 1;
                int min = (int)Math.Pow(10, length);
                int max = (int)Math.Pow(10, length + 1) - 1;
                if (isFloating(type) && (length < 20))
                    return (min + (rnd.NextDouble() * (max - min)));
                else if(length < 10)
                    return rnd.Next(min, max);
            }
            else if (type == typeof(bool))
            {
                return rnd.NextDouble() >= 0.5;
            }
            else if (type == typeof(string) || type == typeof(char))
            {
                return new string(Enumerable.Repeat(CHARS, length).Select(s => s[rnd.Next(s.Length)]).ToArray());
            }

            return default(T);
        }

        private bool isNumeric(Type type)
        {
            return type == typeof(int) || type == typeof(double) || type == typeof(decimal) || type == typeof(float);
        }

        private bool isFloating(Type type)
        {
            return type == typeof(float) || type == typeof(double) || type == typeof(decimal);
        }

    }
}

Abgelegt unter Gaga.

1 Kommentare zum Snippet

Koopakiller schrieb am 02.12.2015:
Dein Code prüft ob der übergebene Typ bekannt ist, wenn nicht gibt er den Standardwert zurück. Das Ergebnis ist hier also nie zufällig, weswegen ich eher eine Exception werfen würde.

Um diesen Fehler zu vermeiden würde ich aber auch hier wieder die vielen Überladungen für jeden Typ schreiben - diese können ja eine gemeinsame Basis-Methode aufrufen.

PS: Was ist mit short und BigInteger für die get-Methode?
 

Logge dich ein, um hier zu kommentieren!