AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi "with variable do" in C#

Ein Thema von generic · begonnen am 16. Sep 2010 · letzter Beitrag vom 17. Sep 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#11

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 13:28
Goto ist nicht böse ... man kann es nur genauso böse einsetzen, wie ein True.

Delphi-Quellcode:
if not b then begin
  ...
end;
ist auch nur ein
Delphi-Quellcode:
is b then goto ende;
  ...
ende:
Delphi-Quellcode:
if b = true then Böse;
 
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 13:39
Man hat bei goto auch keine Möglichkeit zu ermitteln woher der Sprung kam
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 13:52
Goto macht eigentlich nur bei Shell-Skripten (*.bat/*.cmd) Sinn, wenn man dort z.B. mit einem Auswahlmenü arbeiten will/muss
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 14:17
Man kann sich dieses with-do-Konstrukt in C# mit Extension Methods und Delegaten zusammenbasteln:
Code:
public static class Extender
{
  public static void WithDo<T>(this T obj, Action<T> act)
  {
    act(obj);
  }
}

// ...
Sehr.Langer.Name.WithDo(v => {
  v.name = "xyz";
  v.alter = 89;
});
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#15

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 21:42
Gratulation, du hast die Variablendeklaration neu erfunden .

@Topic: Für Object Initializers gebe ich with gern auf. Die Prism-Entwickler dachten anscheinend genauso .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#16

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 21:58
Ist ja aber nicht das gleich wie with, da es nicht mit breits länger erzeugten, sondern nur gerade neu erzeugten Objekten funktioniert (oder?)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 22:47
'with Obj do' ist also böse, ja? Gähn. Der Depp, der das falsch einsetzt ist böse. Nicht das Konstrukt an sich.

Wenn ich mit diesen DevExpress-Komponenten arbeite, die ellenlange Objekthierarchien beinhalten, ist so ein 'With' einfach mal Gold wert. Wenn man weiß, wie man es einsetzt.

Beispiel (Ich würde immer die erste Variante vorziehen):
Delphi-Quellcode:
With TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End do begin
  SpecialFoo := 1;
  SpecialBar := 2;
End;
// oder
TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End.SpecialFoo := 1;
TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End.SpecialBar := 2;
Da das in C# nicht geht, behelfe ich mir -mangels 'WITH'- mit einer privaten Methode ('Clean Code' lässt grüßen)

Code:
private void InitializeSpecialObject (var specialObject : SpecialObject);
{
  specialObject.specialFoo = 1;
  specialObject.specialBar = 2;
}

...
  InitializeSpecialObject (var TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End);
...
(Geht das mit dem 'Var' in C#?) Egal.

Hmmm. Irgendwie eine Steigerung in Punkto 'Lesbarkeit', oder?

Also: Das WITH war eine nette Idee, bevor es Klassen gab. Mit Klassen und doofen unvorsichtigen Programmierern kamen die Probleme. In der Folge hat man (u.A. bei C#) darauf verzichtet.

Und, hey, eine neue Methode, die auch noch in ihrem Namen beschreibt, was da eigentlich passiert, ist doch eh besser als ein extrem intelligent eingesetztes WITH. Denn da weiss ich immer noch nicht, wieso der Programmierer das WITH nu benutzt oder was er da eigentlich gemacht hat.

Gewöhn Dir also das 'WITH' ab. Nicht weil es böse ist, das kleine 'with', sondern weil es was Besseres gibt.

PS: (Visual)Basic kann das übrigens auch, mit dem WITH. Auch ein Grund, es *nicht* zu verwenden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#18

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 23:01
(Geht das mit dem 'Var' in C#?)
Bei einer Object-Referenz (zu 99% bei c#) ja nicht nötig, ansonsten out.

ich nehme lieber kurze lokale Refrenzen
Code:
EndObject theEnd = TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End;
theEnd.SpecialFoo = 1;
theEnd.SpecialBar = 1;
obwohl der Vorschlag von alzaimar die sprachübergreifende sauberste Lösung ist!

Geändert von Satty67 (17. Sep 2010 um 06:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#19

AW: Delphi "with variable do" in C#

  Alt 17. Sep 2010, 06:18
PS: (Visual)Basic kann das übrigens auch, mit dem WITH. Auch ein Grund, es *nicht* zu verwenden.
Das B in Basic steht für Beginners, deswegen nehmen Pro's das nicht

Code:
var end = TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End;
end.SpecialFoo=1;
end.SpecialBar = 2;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org

Geändert von Phoenix (17. Sep 2010 um 06:27 Uhr)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#20

AW: Delphi "with variable do" in C#

  Alt 17. Sep 2010, 06:20
Was hat eine lokale Variable ohne jeglichen Wert im Code zu suchen? ) Aber wir beginnen mit einer Glaubensfrage.

So geht's natürlich auch.

Das B in Basic steht für Beginners, deswegen nehmen Pro's das nicht
Und 'D' steht für...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")

Geändert von alzaimar (17. Sep 2010 um 06:23 Uhr) Grund: Senf hinzugefügt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz