Announcement

Collapse
No announcement yet.

public Konstanten vom Typ DateTime

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • public Konstanten vom Typ DateTime

    Hallo

    Ich bin programmierte Code für ein InfoPath Formular. Es funktioniert auch alles wie es soll nur ist der Code sehr unübersichtlich. Um ihn übersichtlich zu machen möchte ich gern Konstanten für die gesamte Klasse festlegen. Dies geht auch. Nur mein Problem ist jetzt wie kann ich Konstanten für die gesamte Klasse vom Typ DateTime anlegen? Oder gibt es eine Möglichkeit in einer Methode sie festzulegen, so dass alle Methoden dieser Klasse drauf zugreifen können? Letztere Lösung wäre mir sogar noch etwas lieber. Da ich somit diese Methode beim Initialisieren des Formulars aufrufen kann und somit Performance Gewinne erziele.

    Danke für Eure Hilfe
    Stefan

  • #2
    Hallo,

    versuch's mal mit einer read-only Eigenschaft:

    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConstDateTime
    {
        class Program
        {
            private static DateTime dateConstant;
    
            static void Main(string[] args)
            {
                Console.WriteLine(Program.DateConstant);
            }
    
            static DateTime DateConstant
            {
                get 
                {
                    if (dateConstant == DateTime.MinValue)
                        dateConstant = new DateTime(2008, 5, 8);
    
                    return dateConstant;
                }
            }
    
        }
    }

    Gruss

    Comment


    • #3
      Danke Marco das hilft mir nicht weiter. Es sind 27 Daten die ich gern per Konstate festlegen möchte.

      Comment


      • #4
        Und wie wär's damit?

        Code:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        
        namespace ConstDateTime
        {
            class Program
            {
                static void Main(string[] args)
                {
                    Console.WriteLine(DateConstants.Datum1);
                }
            }
        
            class DateConstants
            {
                public static readonly DateTime Datum1 = new DateTime(2008, 5, 8);
                public static readonly DateTime Datum2 = new DateTime(2008, 5, 9);
                public static readonly DateTime Datum3 = new DateTime(2008, 5, 10);
            }
        }

        Comment


        • #5
          Genau das ist es was ich brauche.
          Kannst Du mir aber bitte noch sagen wie der zeitliche Ablauf Deines Programmes ist?
          Laufe ich einmal durch die Klasse "DateConstants" durch oder immer wieder sobald ich "DateConstants.Datum*" aufrufe?
          Viele Grüße
          Stefan

          Comment


          • #6
            Hallo Stefan,

            informiere Dich einmal über static (und readonly): Als statische Variable kann DateConstants.Datum1 direkt benutzt werden, ohne dass eine Instanz der Klasse DateConstants erzeugt werden muss. Beim ersten Aufruf der Klasse wird die Variable mit Inhalt versehen: "new DateTime"; bei jedem späteren Aufruf steht derselbe Wert zur Verfügung. Durch readonly sind spätere Änderungen unmöglich.

            Gruß Jürgen

            Comment


            • #7
              Genial!!!
              Danke Marco und danke Jürgen ihr habt mir sehr gut weitergeholfen.

              Viele Grüße
              Stefan

              Comment


              • #8
                CultureInfo ce = new CultureInfo("de-DE"); Wo kann diese Code Zeile hinschreiben, da die DateTime Funktion wie folgt aussieht:
                public static readonly DateTime Neujahr = new DateTime((ce.DateTimeFormat.Calendar.GetYear(DateT ime.Today)), 01, 01);

                Ich bekomme immer wieder die Fehlermeldung: Fehler 1 Für das nicht statische Feld, die Methode oder die Eigenschaft "Urlaubsantrag.FeierConstants.ce" ist ein Objektverweis erforderlich. P:\Urlaubsverwaltung\Code\Urlaubsantrag\FormCode.c s 273 65 Urlaubsantrag

                Comment


                • #9
                  Mach's doch nicht so kompliziert. Das aktuelle Jahr ist doch unabhängig von der CultureInfo (allenfalls davon, an welchem Längengrad man sich befindet und welche lokale Zeit gilt, aber das betrifft doch nur einen Zeitraum von 12 Stunden). So geht es immer:
                  Code:
                  public static readonly DateTime Neujahr = new DateTime(DateT ime.Today.Year), 01, 01);
                  Jürgen

                  Comment

                  Working...
                  X