Entwickler-Ecke
C# - Die Sprache - C# erkennt meinen Konstruktor mit 2 Argumenten nicht??
Xardas008 - Do 03.12.09 20:45
Titel: C# erkennt meinen Konstruktor mit 2 Argumenten nicht??
Hallo,
ich habe gerade folgendes, ich versuche eine Klasse zu schreiben die mir Brüche darstellt. habe dazu 4 Konstruktoren definiert. Zum einen den Default-Ctor, dann einen mit 1nem Parameter, mit 2 und einen Copy-Ctor.
Hab dann beim erstellen folgendes gemacht:
C#-Quelltext
1:
| Rational a = new Rational(4, 5); |
Und er bemängelt meinen Konstruktor mit 2 Parametern, dass er nicht existieren würde.
Folgende Konstruktoren habe ich:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| Rational() { num = 0; denom = 1; }
Rational(int num) { this.num = num; denom = 1; }
Rational(int num, int denom) { this.num = num; this.denom = denom; }
Rational(Rational ct) { this.num = ct.Num; this.denom = ct.Denom; } |
Hat wer ne Idee, was ich hier falsch gemacht habe? Meine Java-Version davon sieht exakt genauso aus und da gehts.
Christian S. - Do 03.12.09 20:49
Hallo!
Versuchst Du die Klasse im selben Assembly zu instanzieren? Falls nicht: Die Default-Sichtbarkeit ist internal, möchtest Du also einen der Konstruktoren außerhalb Deines Assemblies benutzen, musst Du ihn als public deklarieren.
Grüße
Christian
Xardas008 - Do 03.12.09 20:52
Das ist ja das seltsame gewesen. Beide Klassen sind im namespace Learning gewesen. Hab aber grade selber gemerkt das ich die gar nicht als public hatte und daher hat er sie nicht gesehen.
Wie es aussieht sind Ctors standardmäßig private, was mir nur irgendwie keinen Sinn ergibt. Internal hätte ich ja noch akzeptiert weil dann hätte er sie sehen müssen.
Problem ist aber jetzt gelöst danke dir für deine Unterstützung.
Christian S. - Do 03.12.09 21:04
Nein, Konstruktoren sollten wie alles andere per Default internal sein.
Übirgens können zwei Klassen im selben Namespace, aber trotzdem in unterschiedlichen Assemblies sein, sodass sie ihre internal-Member gegenseitig nicht sehen.
Xardas008 - Do 03.12.09 21:20
Christian S. hat folgendes geschrieben : |
Nein, Konstruktoren sollten wie alles andere per Default internal sein.
Übirgens können zwei Klassen im selben Namespace, aber trotzdem in unterschiedlichen Assemblies sein, sodass sie ihre internal-Member gegenseitig nicht sehen. |
Auch wenn sie im gleichen Projekt sind? Weil dann gehören die doch zur gleichen Assembly oder versteh ich da was falsch.
Weil die Klasse MainClass habe ich, um bestimmte Module testen zu können, die im gleichen Projekt sind und als normale Klassen definiert wurden.
Christian S. - Do 03.12.09 21:31
Xardas008 hat folgendes geschrieben : |
Auch wenn sie im gleichen Projekt sind? Weil dann gehören die doch zur gleichen Assembly oder versteh ich da was falsch. |
Nein, wenn sie im gleichen Projekt sind, sind sie im gleichen Assembly. Ich hatte das nur angemerkt, weil Du in Deinem vorigen Posting von "gleichem Namespace" sprachst, aber "gleiche Assembly" ausschlaggebend ist ;-)
Nachdem ich's gerade getestet habe und daraufhin im Hejlsberg nachgesehen habe, muss ich mich auch korrigieren: Die Standardsichtbarkeit ist "private", womit alles geklärt sein dürfte :-)
Kommt davon, wenn man meistens nur in Delphi Prism programmiert ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!