struct



  • Hallo,

    schreibe ein Programm für Elektrotechnik. Dabei verwende ich einen struct der 60 Einträge hat. Hin und wieder erfordert es der Programmablauf dass ich alle Elemente des struct zu 0 mache.

    Jetzt die Frage.

    Muss ich alle 60 Einträge ( was 60 zeilen Code bedeutet ) hinschreibe und jeden einzelnen zu 0 machen ?



  • Früher hätte man einen geteert und gefedert.



  • DAS HAST DU DEPP DOCH VOR KURZEM SCHONMAL GEFRAGT



  • Soweit ich weiß bleibt mir nix anderes übrig. Aber vielleicht hat ja jemand eine neue Idee. Denn wer möchte schon diese Drecksarbeit machen und 60 Einträge hinschreiben.



  • Am besten fragst Du dann in einer Woche nochmal. Mit einem neuen Thread. Wenn man hartnäckig genug ist entstehen Neue Lösungen auf magische Weise.

    Bitte verschwinde endlich aus diesem Forum



  • @blurry333
    Frage hier schon beantwortet: http://www.c-plusplus.net/forum/p2307578#2307578

    @Mod: Den Thread könnte man dann wohl schließen, da asc im o.g. Thread alles Relevante genannt hat.



  • aso über Reflection kann man es indirekt machen. Ist mir leider noch nie begegnet



  • Sollte es nicht mit new gehen?

    MyStruct s; 
    s.foo = 10;
    s = new MyStruct();
    // s.foo == 0
    


  • blurry333 schrieb:

    aso über Reflection kann man es indirekt machen. Ist mir leider noch nie begegnet

    Nein mit Reflection kann man die struct Komponenten durchiterieren. Mit new werden die Komponenten Standardinitalisiert. Falls du dein Struct, aus was für irgendwelche Grund, nicht neuanlegen willst, muss du für das Struct eine Nullungsfunktion schreiben, sei es durch Reflection oder per Memberzugriff.



  • Zeus schrieb:

    Falls du dein Struct, aus was für irgendwelche Grund, nicht neuanlegen willst, muss du für das Struct eine Nullungsfunktion schreiben, sei es durch Reflection oder per Memberzugriff.

    Was für einen Grund könnte es da geben? Der (implizite) Struct-Konstruktor macht auch nichts anderes, als alle Felder zu nullen.



  • Was ich nicht verstehe, sobald so ein Troll kommt wie blury333, hagelt es nur so von Antworten und da geht so ein thread schnell mal über mehrere Seiten. Zwar auch viele Beschimpfungen aber auch ein einige "normale". Aber wenn man hier richtig Fragen stellt die etwas anspruchsvoller sind bekommt man keine Antwort.

    Irgendwie beantwortet man hier lieber stumpfsinnige Fragen, die entweder nicht viel Gehirnschmal erfordern oder einfach nur eines dummen Kommentars erfordern.

    Schade.



  • Zeus schrieb:

    Falls du dein Struct, aus was für irgendwelche Grund, nicht neuanlegen willst, muss du für das Struct eine Nullungsfunktion schreiben, sei es durch Reflection oder per Memberzugriff.

    Einfachste wäre halt einen Konstruktor zu schreiben der alle Elemente zu NUll macht. Aber die 60 Zeilen blieben mir auch dann nicht erspart 🙂



  • Ich kann das ohne einen Konstruktor.

    using System;
    
    namespace ConsoleApp01
    {
    	public struct AStruct
    	{
    		public byte? a;
    		public sbyte? b;
    		public int? c;
    		public uint? d;
    		public long? e;
    		public ulong? f;
    		public float? g;
    		public double? h;
    		public decimal? i;
    		public char? j;
    		public TimeSpan? m;
    		public DateTime? n;
    
    	}
    
    	public class MainClass
    	{
    		public static void Main (string[] args)
    		{
    			var str = new AStruct();
    
    			Console.WriteLine (str.a == null ? "null" : "not null" );
    			Console.WriteLine (str.b == null ? "null" : "not null" );
    			Console.WriteLine (str.c == null ? "null" : "not null" );
    			Console.WriteLine (str.d == null ? "null" : "not null" );
    			Console.WriteLine (str.e == null ? "null" : "not null" );
    			Console.WriteLine (str.f == null ? "null" : "not null" );
    			Console.WriteLine (str.g == null ? "null" : "not null" );
    			Console.WriteLine (str.h == null ? "null" : "not null" );
    			Console.WriteLine (str.i == null ? "null" : "not null" );
    			Console.WriteLine (str.j == null ? "null" : "not null" );
    			Console.WriteLine (str.m == null ? "null" : "not null" );
    			Console.WriteLine (str.n == null ? "null" : "not null" );
    			Console.ReadLine ();
    		}
    	}
    }
    

Anmelden zum Antworten