Το With ... End είναι απλό syntactic sugar. Σε γλυτώνει απλά από τη "φασαρία" να γράφεις το όνομα του αντικειμένου στο οποίο αναφέρεσαι. Αν θέλεις να αλλάξεις τις τιμές σε 4-5 properties του αντικειμένου, μπορεί να σου γλυτώσει μερικά keystrokes. Τέτοιες περιπτώσεις είναι σπάνιες όμως. Η πιο συνηθισμένη περίπτωση είναι όταν δημιουργείς ένα αντικείμενο και θέλεις να βάλεις τα property του. Σε αυτή την περίπτωση όμως, είναι ευκολότερο να φτιάξεις ένα constructor παρά να χρησιμοποιήσεις With ... End. Επιπλέον, στην C# 3.0 με τους object initializers μπορείς να γράψεις π.χ. MyClass anItem=new MyClass {MyProperty1=1, MyProperty2=2} και να κάνεις initialize τα properties σου χωρίς καν να φτιάξεις ένα ξεχωριστό constructor.
Νομίζω ότι η With ... End υπάρχει περισσότερο για backwards compatibility παρά για κάποιο ουσιαστικό λόγο.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos