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# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

VB.NET 2017/2015/2013 Komplett

Ziel des Seminars ist der flexible Umgang mit VB.NET, wie z.B. die damit verbundene eigenständige Entwicklung von Programmen oder das Verwenden von Datenbanken.

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!