[C#] String aneinanderhängen

corey

Ensign
Registriert
März 2005
Beiträge
254
hi leute,

ich habe eine frage bezüglich strings in c#.

beispiel:

string name;
string vorname;

nun will ich beide strings in eine variable speichern, wie kann ich dies machen?

in C war das die funktion strcat(ziel_string, quell_string);

vielen dank schon im voraus!
 
In C gab es aber auch keine Strings in dem Sinne. Da waren es nur char arrays (wie auch in C++). Kannst du die beiden Strings nicht addieren? In VB geht das glaub ich.
Also z.B.:
ziel=name+vorname

Gruß, Martin
 
hi martin,

vielen dank für deine schnelle hilfe!

klar, dass es in c keinen Datentyp "string" gab...

sorry, ich hab meine frage etwas falsch gestellt.

ich poste hier mal mein testcode (bin am oop - lernnen...;)):


using System;

namespace ueb_klasse
{

class CMember
{
//Felder

private string _name;
private string _vorname;

//Konstruktor
public CMember (string name, string vorname)
{
_name = name;
_vorname = vorname;
}

//Properties
public string GetSetName
{
get{return(_name);}
set{_name = value;}
}


public string GetSetVorname
{
get{return(_vorname);}
set{_vorname = value;}
}

//Methoden
public string totalName(string vorname, string name)
{
return(vorname + name);
}

static void Main(string[] args)
{
string name = "Hans";
string vorname = "Muster";
int auswahl;
int count = 0;
string mandantname;

do
{
Console.WriteLine("****Mandanten - TestProgramm****");
Console.WriteLine("<1> Mandant erstellen");
Console.WriteLine("<2> Mandant ändern");
Console.WriteLine("<3> Exit.");
Console.WriteLine("\n");
Console.WriteLine("Ihre Auswahl > ");
auswahl = Convert.ToInt32(Console.Read());
Console.WriteLine("\n");
Console.WriteLine("Getätigte Auswahl: {0}",auswahl);

switch(auswahl)
{
case 1: Console.WriteLine("Name: ");
name = Console.ReadLine();
Console.WriteLine("Vorname: ");
vorname = Console.ReadLine();
count++;
mandantname = (name+count);
CMember mandantname = new CMember(name,vorname);
Console.WriteLine("\n\n Systemname: {0}",mandantname);
break;
}

}while(auswahl!=3);

Console.ReadLine();




}
}
}



Also nun meine Frage: man sollte ein mandant erstellen können, welcher dann als objekt (name+vorname) heisst:

nun wenn ich jetzt nun ein neuer mandant erstellen will:

CMember (name+vorname) = new CMember

dieses "(name+vorname)" geht leider nicht...

natürlich kann man durch string1 = string2 + string3 zwei strings zusammenführen.

aber ich möchte jetzt diese beiden string werte als neues objekt definieren.

(das oben ist ein übungsbeispiel von mir..)

Vielen Dank für eure hilfe!
 
wie wär's mit:

Code:
string1=name+vorname;
CMember (string1) = new CMember;
?

p.s.: ich hab absolut keine ahnung von c#, aber ich denk das sollte gehn oder (wenn ich die anforderung richtig verstanden hab).
 
hi [invisible],

schon probiert..;) funktioniert leider nicht...
 
Wie du das nun machst, weiß ich auch nicht, aber ich weiß, dass du dies garnicht machen solltest. Du erzeugst dadurch doch einen gewissen Overhead an Kode, welcher aussschließlich dazu dienen müsste, zu validieren, ob der Mandantenname nun auch instanznamentauglich ist. Es gibt hier ja gewisse Konventionen, welche einzuhalten sind und es würde genau an dem Punkt schwierig, wo deine Software geografisch global wird mit chinesischen Zeichen, ä, ö ü...
Die OOP bietet dir da doch bessere Möglichkeiten.

Wurden also die Daten (Name, Vorname...) eingegeben, so erzeugst du aus diesen Daten eben jeweils eine neue Instanz. Der Klasse könntest du dann ja auch ein weiteres Feld "identifier" oder sowas hinzufügen und im Konstruktor der Klasse dafür sorgen, dass aus dem übergebenen Vor- und Nachnamen der identifier gebildet und gespeichert wird.
Zur Verwaltung der Mandanten schreibst du dir dann eben eine Verwaltungsklasse, welche zum einen über eine Collection verfügt, um Mandanten-Objekte abzuspeichern, und zum anderen integrierst du eine Funktion "Mandant GetMandantByIdentifier(....)", welche dir den entsprechenden Mandanten anhand seines identifiers zurückliefert.
 
Guck mal was die Klasse String (ich geh mal davo aus die gibt es in .NET) für Funktionen hat. Da müsste es ein geben, die concat oder so heisst.

In C++ gab es zwar nie direkt die Möglichkeit Strings zusammenzuhängen, jedoch sind bei den Entwicklungsumgebungen immer Funktionen zum String (in C++ char[]) bearbeiten dabei.
 
AW: Re: [C#] String aneinanderhängen

Schau dir mal die Klasse System.Text.StringBuilder an, die ist zur Verkettung von Strings bessers geeignet.
 
Also, wenn dann erstellst Du das Objekt in deinem Fall so.
Code:
CMember member = new CMember ("Sepp","Meier");

Die Funktion totalName ist meiner Meinung nach Mist. Du hast ja die Namen bereits im Objekt und willst weitere Argumente übergeben ?

Ich würde es so machen:

Code:
public string totalName()
{
return _vorname + " " + _name;
}

Den Namen abrufen kannst Du jetzt folgendermassen.

Code:
string Name = member.totalName();
MessageBox.Show (Name);

Was allerdings nicht weiss, ob die Main Funktion so jemals aufgerufen wird. Ich würde eher auf nein Tippen. Ich müsste das erst selbst ausprobieren.

Ich hoffe ich konnte dir helfen

Gruß Magic
 
Zurück
Oben