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# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

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!