|
» myCSharp.de Diskussionsforum |
|
|
|
Autor
 |
|
frameworker
myCSharp.de-Mitglied
Dabei seit: 29.01.2019
Beiträge: 7
|
|
Hallo,
wenn ich nur ein char Array habe, bspw. dieses:
C#-Code: |
char[] charbase = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ', '!', '?', '.' };
|
und dann aber in einer Schleife staendig per Substr darauf zugreifen muss, muesste man ja andauernd wie folgt vorgehen:
C#-Code: |
while ...
{
Console.WriteLine(new string(charbase).Substring(0,5));
}
|
Also mal davon abgesehen, ob das so sinnvoll ist oder nicht. Als C# Anfaenger gehe ich davon aus, dass dann ja jedesmal in der Schleife ein neues String-Objekt erstellt wird.
Was sicherlich nicht sinnvoll ist. Oder ist dieses exempl. Konstrukt nur syntaktisch haesslich und C# optimiert das selbst?
Oder kann man auch das Stringobjekt vorher einmal generieren und dann in der Schleife als Referenz darauf zugreifen?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von frameworker am 29.01.2019 15:41.
|
|
29.01.2019 15:14
|
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
frameworker
myCSharp.de-Mitglied
Dabei seit: 29.01.2019
Beiträge: 7
Themenstarter
|
|
Hallo pinki,
mir ist unklar, inwieweit sich bestimmte Konstrukte auf die Performance auswirken.
Also Beispiel 1 wäre char Array und in der Schleife ständig new string.
Man könnte natürlich sofort einen normalen String bilden a-z und in der Schleife direkt per substr zugreifen.
Aber dann hätten das char Array und der String zwar denselben Inhalt, aber sie wären zwei unterschiedliche Objekte.
Was ich benötige ist so eine Art C Zeiger vom String Objekt auf das char Array. Denn nur dort ist ja die Substr-Methode vorhanden.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von frameworker am 29.01.2019 15:49.
|
|
29.01.2019 15:49
|
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Abt
myCSharp.de-Team
Dabei seit: 20.07.2008
Beiträge: 13.245
Herkunft: Stuttgart/Stockholm
|
|
Zitat von frameworker: |
bspw. dieses: |
Wenn Du von "beispielsweise" redest, können wir halt auch nur "beispielsweise" antworten.
Ein fixer Wert, wie es Char darstellt, kann durchaus performanter sein als eine Referenz, wie es ein String darstellt - und umgekehrt.
Zitat von frameworker: |
Was ich benötige ist so eine Art C Zeiger vom String Objekt auf das char Array. |
Warum "benötigst" Du das? Was erhoffst Du Dir? Was ist die Anforderung?
Für mich riecht das zunächst nach premature optimization
|
|
29.01.2019 19:01
|
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Th69
myCSharp.de-Poweruser/ Experte
Dabei seit: 01.04.2008
Beiträge: 3.405
Entwicklungsumgebung: Visual Studio 2015/17
|
|
Wenn du das (konstante) Objekt einmalig vor der Schleife erstellst, wäre das von der Performance her besser:
C#-Code: |
string str = new string(charbase).Substring(0,5);
while (...)
{
Console.WriteLine(str);
}
|
Nur wenn die Parameter variabel sind, dann müßtest du den Substring jedesmal innerhalb der Schleife erzeugen (oder aber alle möglichen Strings vorher in einem String-Array erzeugen und speichern).
|
|
29.01.2019 19:11
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
chilic
myCSharp.de-Poweruser/ Experte
Dabei seit: 12.02.2010
Beiträge: 2.018
|
|
Da scheint tatsächlich noch verschiedenes unklar zu sein. Trotzdem möchte ich auf die eigentliche Frage eingehen. Dass der String natürlich auch außerhalb der Schleife erzeugt werden kann weißt du sicher.
Zitat: |
Man könnte natürlich sofort einen normalen String bilden a-z und in der Schleife direkt per substr zugreifen.
Aber dann hätten das char Array und der String zwar denselben Inhalt, aber sie wären zwei unterschiedliche Objekte. |
Der String ist ein anderes Objekt als das Array. Das ist doch unabhängig davon wo du ihn generierst.
Du könntest auch gleich einen String erzeugen der aus den gewünschten Zeichen besteht, ohne den Umweg über das Array. Da du das so zeigst, scheint etwas mehr dahinter zu stecken als wir wissen. Wenn du dein tatsächliches Problem lösen willst solltest du mehr darüber erzählen.
|
|
30.01.2019 06:03
|
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
|
|