Frage von BENNIBOZz3352, 50

Wie eine methode definieren,die per parameter einen namen an eine deklaration eines panels weitergibt(c#)?

habe gerade ein problem: ich will eine methode schreiben an die man per Parameter einen Namen eingibt der in String eingespeichert wird.Dieser Name soll dann als Name für das in der Methode erzeugte Panel verwendet werden.Ich hab das jetzt so gemacht:

private void newPanel(string name) {panel eingabename= new panel...usw...}

wieso darf ich dort die variable "eingabename" nicht als Name benutzen(wieso sagt visual Studio das sei falsch) ?Muss ein Name eine Konstante sein?Wie mache ich das so ,dass es funktioniert?Tut mir leid,dass ich jetzt schon so viele Fragen zu diesem Thema gestellt habe:)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Kiboman, 41

das sieht ziemlich falsch aus. Das was man sieht.

ist das alles?

so wie es aussieht ist eingabename nicht deklariert

und wo wird name verwendet?


Kommentar von Kiboman ,

ah eingabename ist ja doch als panel deklariert hab das übersehen

welcher fehler wird genau ausgegeben.

Kommentar von BENNIBOZz3352 ,

hab mich verschrieben : der wesentliche Teil des programms, also dort wo der fehler ist: private void newPanel(string name){ panel name= new panel ...//ab dort wird dem panel werte zu gewiesen. also das soll dafür gut sein,dass man einen namen in String eingibt und man dann ein von der methode erzeugtes panel mit den in der methode festgelegten werten hat.visual Studio sagt:"a local or parameter named name cannot be declared in this scope because that name is used in an enclosing local scope to define a local parameter" weißt di wo der fehler ist und wie man ihn behebt?danke dir

Kommentar von Kiboman ,

Zitat:

"Arm oder nicht ist die falsche Frage, denn dynamische Variablennamen
sind mit typisierten Sprachen nicht machbar. Aus qualitativer Sicht
verschlechtern solche "Tricks" die Lesbarkeit und somit die Wartbarkeit
von Code und sind somit eher abzulehnen. Zumal diese Tricks via
Hashtables ohne Probleme sauber nachzubilden sind (Abbildung Schlüssel
auf Wert)."

Quelle: http://www.mycsharp.de/wbb2/thread.php?threadid=14011

Kommentar von Kiboman ,

du hast nämlich einen fehler

im methoden kopf deklarierst du

string name

im code deklarierst du

panel name

dabei nimmt er nicht name als string sondern versucht name neu zu deklarieren.

du könntest panel in einem array erzeugen und darin dann den namen als 1. dimension nehmen.

Kommentar von BENNIBOZz3352 ,

das ist doch etwas völlig anderes oder?:/

Kommentar von BENNIBOZz3352 ,

hatte die letzte nachricht nicht gesehen

Kommentar von BENNIBOZz3352 ,

bitte schreib mal wie du das meinst also in Code,falls es okay für dich ist

Kommentar von Kiboman ,

sieht nicht schön aus löst aber dein Problem du MUSST aber name als int übergeben.

die lösung musst du abändern funktioniert aber.

class Test
{
public void Main ()
{

}
public string TestWrite (string HalliHallo)
{
return "Das ist ein Test..."+HalliHallo;
}

}
class Program
{
static void Main(string[] args)
{
Test[] MyNewClasses = new Test[1];
int name = 0;
MyNewClasses[name] = new Test();
Console.WriteLine(MyNewClasses[name].TestWrite("DummDiDumm"));
Console.ReadLine();
}
}

Kommentar von BENNIBOZz3352 ,

Danke sehr,aber ist das nicht java?:)

Kommentar von Kiboman ,

nein sicher nicht...

und wenn du das fragst...

...haste das nichtmal getestet

ist eine c# console

du hast form egal das prinzip ist das selbe

Kommentar von BENNIBOZz3352 ,

ok ich dachte wegen dem public static void main steing args

Kommentar von BENNIBOZz3352 ,

ich verstehe den code oben nicht.bzw. wieso es dann funktioniert,wenn man es so macht wie du

Kommentar von Kiboman ,

hast du es bei dir übertragen und zum funktionieren bekommen und verstehst nicht wrum es geht,

oder kannst du es nicht abändern.

Kommentar von BENNIBOZz3352 ,

ich habe es noch nicht probiert abzuändern,das ist sicherlicj kein problem,aber ich verstehe nicht wieso es dann funktioniert bzw. funktionieren soll

Antwort
von Kiboman, 30

och ne....

eingabename....

du musst das:

panel name = new panel...

machen.

Keine passende Antwort gefunden?

Fragen Sie die Community