{"id":55000103,"date":"2017-10-01T00:00:00","date_gmt":"2020-03-27T19:28:33","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=103"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Von_C_zu_VB_Basics_Variablen_Operatoren_","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Von_C_zu_VB_Basics_Variablen_Operatoren_\/","title":{"rendered":"Von C# zu VB: Basics, Variablen, Operatoren"},"content":{"rendered":"<p><b>Wer bisher mit C# gearbeitet hat und zu VB wechseln m&ouml;chte, sieht sich bei der Entwicklung von WPF-Anwendungen einigen &Auml;nderungen gegen&uuml;ber. Dieser Artikel fasst die wichtigsten Elemente der Sprache Visual Basic 2015 f&uuml;r den Entwickler in Bezug auf die bisher in diesem Magazin unter C# durchgef&uuml;hrten Programmierungen zusammen. Zum Experimentieren mit den Beispielen nutzen wir das Tool LINQPad 5. Au&szlig;erdem schauen wir uns in diesem Artikel die Grundlagen der Sprache an, die wir im Artikel &#8220;Von VBA zu C#: Erste Anwendung und Variablen&#8221; betrachtet haben.<\/b><\/p>\n<h2>WPF-Fenster: Wo ist der Code im Code behind-Modul<\/h2>\n<p>Wer zuvor mit C# gearbeitet hat, wei&szlig;, dass ein Code behind-Modul eines WPF-Fensters bereits einigen Code enth&auml;lt. Wenn Sie hingegen ein VB\/WPF-Projekt erstellen und sich das Code behind-Fenster ansehen, erblicken Sie eine ziemliche Leere.<\/p>\n<p>Dies ist der vollst&auml;ndige Inhalt des Moduls, hier am Beispiel von <b>MainWindow.xaml.vb<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Class<\/span> MainWindow\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<h2>Konstruktor hinzuf&uuml;gen<\/h2>\n<p>Den liebgewonnenen Konstruktor, also die Methode, die automatisch beim Initialisieren des Fensters ausgel&ouml;st wird und die Sie auch so anpassen k&ouml;nnen, dass Sie beim Aufruf benutzerdefinierte Parameter &uuml;bergeben k&ouml;nnen, fehlt g&auml;nzlich. Wie also wollen Sie beim Aktionen programmieren, die beim Initialisieren des Fensters durchgef&uuml;hrt werden geschweige denn eigene Parameter definieren<\/p>\n<p>Das geht einfacher, als Sie denken &#8211; Sie f&uuml;gen einfach die Zeile <b>Public Sub New() <\/b>hinzu und erhalten dann die wie folgt automatisch erg&auml;nzte Methode:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>New()\r\n         '' Dieser Aufruf ist f&uuml;r den Designer erforderlich.\r\n         InitializeComponent()\r\n         '' F&uuml;gen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Hier k&ouml;nnen Sie dann eigene, beim Initialisieren auszuf&uuml;hrende Anweisungen eintragen. Au&szlig;erdem k&ouml;nnen Sie die <b>New()<\/b>-Methode nat&uuml;rlich auch um benutzerdefinierte Parameter erweitern.<\/p>\n<h2>Gro&szlig;- und Kleinschreibung<\/h2>\n<p>Was als N&auml;chstes auff&auml;llt, ist die Gro&szlig;schreibung von Schl&uuml;sselw&ouml;rtern. Dies ist einer der Unterschiede zwischen C# und Visual Basic 2015.<\/p>\n<h2>Case Sensitive oder nicht<\/h2>\n<p>Case Sensitive bedeutet, dass die Gro&szlig;- und Kleinschreibung einen Unterschied macht &#8211; <b>a <\/b>ist also ungleich <b>A<\/b>. Das hei&szlig;t auch, dass Sie unter C# beispielsweise die folgenden beiden <b>String<\/b>-Variablen deklarieren k&ouml;nnen:<\/p>\n<pre>string a;\r\nstring A;<\/pre>\n<p>Unter Visual Basic erhalten Sie f&uuml;r die zweite Zeile einen Fehler:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>a<span style=\"color:blue;\"> As String<\/span>\r\n<span style=\"color:blue;\">Dim <\/span>A<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Variablen und Typen\/Klassen k&ouml;nnen jedoch in beiden Sprachen mit unterschiedlicher Gro&szlig;-\/Kleinschreibung genutzt werden, also etwa wie folgt, wo wir <b>Test1 <\/b>als Klassennamen und <b>test1 <\/b>als Objektname auf Basis dieser Klasse nutzen:<\/p>\n<pre><span style=\"color:blue;\">Class<\/span> Test1\r\n     ''...\r\n<span style=\"color:blue;\">End Class<\/span>\r\n<span style=\"color:blue;\">Class<\/span> Test2\r\n     <span style=\"color:blue;\">Private <\/span>Sub Test()\r\n         <span style=\"color:blue;\">Dim <\/span>test1<span style=\"color:blue;\"> As <\/span>Test1\r\n     End Sub\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<h2>Beispiele mit LINQPad 5<\/h2>\n<p>F&uuml;r die folgenden, einf&uuml;hrenden Beispiele in Visual Basic 2015 nutzen wir <b>LINQPad 5<\/b>, wo wir deutlich einfacher experimentieren k&ouml;nnen als in Visual Studio, wo wir zumindest eine Konsolenanwendung brauchen, die wir immer wieder ausf&uuml;hren m&uuml;ssen.<\/p>\n<p>Den Download von <b>LINQPad 5 <\/b>finden Sie unter der Internetadresse <b>www.linqpad.net<\/b>.<\/p>\n<p>Nach der Installation und dem Start von LINQPad 5 finden Sie im Hauptbereich ein Kombinationsfeld namens <b>Language<\/b>, mit der Sie die drei folgenden Optionen f&uuml;r Visual Basic einstellen k&ouml;nnen (siehe Bild 1):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_05\/pic_103_001.png\" alt=\"Auswahl der verschiedenen Eingabem&ouml;glichkeiten\" width=\"649,559\" height=\"267,7509\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Auswahl der verschiedenen Eingabem&ouml;glichkeiten<\/span><\/b><\/p>\n<ul>\n<li><b>VB Expression<\/b>: Testen einfacher Ausdr&uuml;cke wie etwa <b>DateTime.Now.ToString()<\/b> durch Eingabe und anschlie&szlig;ende Bet&auml;tigung von <b>F5<\/b> (siehe Bild 2)<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_05\/pic_103_002.png\" alt=\"VB-Ausdrucks, dessen Ergebnis dann im Ausgabebereich landet\" width=\"499,6607\" height=\"213,114\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: VB-Ausdrucks, dessen Ergebnis dann im Ausgabebereich landet<\/span><\/b><\/p>\n<li><b>VB Statement(s)<\/b>: F&uuml;hrt mehrere Anweisungen aus, also etwa den Inhalt einer Methode &#8211; nur eben ohne die &uuml;bliche <b>Public Sub &#8230;\/End Sub<\/b>-Zeilen (siehe Bild 3). Dazu ist wiederum das Bet&auml;tigen der Taste <b>F5 <\/b>beziehungsweise der Starten-Schaltfl&auml;che n&ouml;tig.<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_05\/pic_103_003.png\" alt=\"Eingabe einiger Anweisungen, die nacheinander ausgef&uuml;hrt werden. \" width=\"499,6607\" height=\"250,2339\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Eingabe einiger Anweisungen, die nacheinander ausgef&uuml;hrt werden. <\/span><\/b><\/p>\n<li><b>VB Program<\/b>: Hier k&ouml;nnen Sie komplette Methoden, Klassen und so weiter einbinden. Eine neue Registerseite dieses Typs blendet die Methode <b>Sub Main <\/b>ein, die beim Ausf&uuml;hren mit <b>F5 <\/b>gestartet wird. Darunter k&ouml;nnen Sie beliebige weitere Elemente einbinden (siehe Bild 4). Mehr dazu in den folgenden Beispielen!<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_05\/pic_103_004.png\" alt=\"Ausf&uuml;hren der Methode einer Klasse\" width=\"499,6607\" height=\"255,8844\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Ausf&uuml;hren der Methode einer Klasse<\/span><\/b><\/p>\n<\/ul>\n<h2>Namespaces hinzuf&uuml;gen<\/h2>\n<p>Unter C# f&uuml;gen Sie zus&auml;tzliche Namespaces mit der <b>using<\/b>-Anweisung hinzu. Visual Basic nutzt stattdessen die <b>Imports<\/b>-Anweisung:<\/p>\n<pre>Imports System.Windows<\/pre>\n<p>In <b>LINQPad 5 <\/b>k&ouml;nnen Sie diese Zeile in der aktuellen Version noch nicht nutzen. Dazu verwenden Sie einen kleinen Umweg:<\/p>\n<ul>\n<li>Klicken Sie mit der rechten Maustaste auf den Tab-Reiter und w&auml;hlen Sie den Kontextmen&uuml;-Eintrag <b>Query Properties&#8230; <\/b>aus.<\/li>\n<li>Klicken Sie auf der Registerseite <b>Additional References <\/b>auf <b>Add&#8230; <\/b>und w&auml;hlen Sie die hinzuzuf&uuml;gende Bibliothek aus, zum Beispiel <b>System.Windows.Forms.dll<\/b> (siehe Bild 5).<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_05\/pic_103_005.png\" alt=\"Hinzuf&uuml;gen von Bibliotheken\" width=\"649,559\" height=\"405,1105\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Hinzuf&uuml;gen von Bibliotheken<\/span><\/b><\/p>\n<li>Um dann den Namespace f&uuml;r den Code in <b>LINQPad 5 <\/b>nutzen zu k&ouml;nnen, wechseln Sie auf die Seite <b>Additional Namespace Imports<\/b>. Klicken Sie hier rechts oben auf den Link <b>Pick from assemblies<\/b>. Dadurch wird ein weiterer Bereich eingeblendet, aus dem Sie die zu nutzenden Namespaces ausw&auml;hlen und mit der Schaltfl&auml;che <b>Add Selected Namespace <\/b>zur aktuellen Seite hinzuf&uuml;gen k&ouml;nnen (siehe Bild 6). Damit k&ouml;nnen Sie nun beispielsweise die <b>MessageBox<\/b>-Klasse nutzen.<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_05\/pic_103_006.png\" alt=\"Hinzuf&uuml;gen von Namespaces\" width=\"499,6607\" height=\"362,1136\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Hinzuf&uuml;gen von Namespaces<\/span><\/b><\/p>\n<\/ul>\n<h2>Namespaces im Code definieren<\/h2>\n<p>Um einen Namespace im Code zu definieren, verwenden Sie genau dieselbe Anweisung wie unter C#:<\/p>\n<pre>Namespace Beispielnamespace<\/pre>\n<p>Unter LINQPad 5 k&ouml;nnen Sie diese Anweisung allerdings nicht nutzen &#8211; aber wenn Sie soweit sind, k&ouml;nnen Sie dies ja auch gleich im entsprechenden Projekt-Kontext testen.<\/p>\n<h2>Sub und Function<\/h2>\n<p>Genau wie unter VBA und im Gegensatz zu C# nutzen wir in Visual Basic 2015 die beiden Schl&uuml;sselw&ouml;rter <b>Sub <\/b>und <b>Function<\/b>, um Prozeduren (und Methoden) sowie Funktionen zu definieren &#8211; das Schl&uuml;sselwort <b>void <\/b>von C# f&auml;llt hier also komplett weg. Beiden k&ouml;nnen Sie kein, ein oder mehrere Parameter &uuml;bergeben. Die Funktion erh&auml;lt am Ende wie unter VBA ein <b>As<\/b>-Schl&uuml;sselwort mit der Angabe des Datentyps f&uuml;r den R&uuml;ckgabewert. Dieser gibt ihren Funktionswert zur&uuml;ck:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>TestFunction()<span style=\"color:blue;\"> As String<\/span>\r\n     TestFunction = \"bla\"\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000103\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000103?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000103\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer bisher mit C# gearbeitet hat und zu VB wechseln m&ouml;chte, sieht sich bei der Entwicklung von WPF-Anwendungen einigen &Auml;nderungen gegen&uuml;ber. Dieser Artikel fasst die wichtigsten Elemente der Sprache Visual Basic 2015 f&uuml;r den Entwickler in Bezug auf die bisher in diesem Magazin unter C# durchgef&uuml;hrten Programmierungen zusammen. Zum Experimentieren mit den Beispielen nutzen wir das Tool LINQPad 5. Au&szlig;erdem schauen wir uns in diesem Artikel die Grundlagen der Sprache an, die wir im Artikel &#8220;Von VBA zu C#: Erste Anwendung und Variablen&#8221; betrachtet haben.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662017,66052017,44000023,44000016],"tags":[],"yst_prominent_words":[],"class_list":["post-55000103","post","type-post","status-publish","format-standard","hentry","category-662017","category-66052017","category-PowerApps","category-VBGrundlagen"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000103"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000103\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000103"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}