Hi,
ist es möglich die vorhandene Trim()-Methode zu erweitern bzw. zu überschreiben?
Ich möchte gerne die Funktionalität hinzufügen, dass auch innerhalb des übergebenen Strings multiple Returns und Leerzeichen herausgeschnitten werden.
Die Prototypen für diese Funktion habe ich bereits, ich möchte diese allerdings gerne fest an die Trim()-Methode binden.
Vielen Dank!
timmi
Naja, es gibt die Möglichkeit mit Erweiterungsmethoden (scheinbar) bestehende Typen zu erweitern.
Allerdings gehört Trim
zur string
-Klasse - und die kannst du nicht ändern.
Gruß,
dN!3L
Ich habe so ein Wort im Kopf: override. Kann ich die Methode überschreiben?
Wenn ja, wie?
Ich habe so ein Wort im Kopf: override. Kann ich die Methode überschreiben?
Nein, nicht die Trim
-Methode der string
-Klasse.
Erstens ist diese Methode nicht als überschreibbar markiert, zweitens kannst du string
nicht als Basisklasse benutzen und drittens würde dir das - selbst wenn es ginge - nichts bringen, da die Methoden trotzdem string
und nicht deine Klasse zurückgeben würden.
Gruß,
dN!3L
mach dir doch eine erweiterungsmethode "MySuperDuperTimmiTrim()" auf string, wo du deine funktionalität reinpackst.
ein bestehendes Trim abzuändern wäre ohnehin fatal, da man beim benutzen der methode mit sicherheit nicht daran denkt das sie sich anders verhlaten könnte als man es gewohnt ist...
Hallo timmi,
auch innerhalb des übergebenen Strings multiple Returns und Leerzeichen herausgeschnitten
in diesem Fall würde ich die Methode auch nicht Trim()
nennen, da unter Trim()
üblicherweise das Entfernen ungewünschter Zeichen am Anfang und am Ende des Strings verstanden wird.
m0rius
Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg
Damals hatte ich die Page mit den Erweiterungsmethoden (Extension Methods) nicht verstanden, dies ist jetzt schon der Fall und deswegen will ich das hier noch einmal dokumentieren, damit es vielleicht etwas besser verständlich wird.
Hierzu siehe Screenshots. Mehr braucht es nicht, um das zu verstehen
(Außer das die Klasse in welcher sich die statische Methode befindet ebenfalls statisch sein muss und das sich der Namespace der Klasse im selben Namespace wo man es nutzen möchte befinden muss, bzw. bindet diesen via using ein.)
Hallo tikra,
damit es auch jeder Depp wie ich versteht.
Ich will mich zwar nicht als Depp bezeichnen, aber ich musste jetzt schon etwas länger denken damit ich verstanden habe was du mit deinen ersten Bild wolltest. Durch aktualisieren der Seite und durch Anbetracht des 2.Bildes verstand ich dass du damit zeigen wolltest wie Intellisense dies mit den Extension Methoden darstellt. Aber ich denke dass ein "Depp" auch durch diese 2 Bilder nicht verstanden hat wie Extension Methods funktionieren und für was sie zuständig sind. Eigentich denke ich fällt das Thema Extension Methos zu 1.1.1 der FAQs die eigentlich als Grundlage vorausgesetzt werden sollten.
Gruß
Michael
Okay, sorry.
Trotzdem ist es hiermit etwas besser dokumentiert, wie ich finde.
Hallo tikra,
ein Beispiel hilft meistens. Hier ein kleines Beispiel von mir:
public class Blah
{
public int Value { get; set; }
}
public class Test
{
public int TestMethod(Blah x)
{
return x.Value * 2;
}
}
public static class TestEx
{
public static int TestMethod(this Test test, Blah x, int i)
{
return x.Value * 2 + i;
}
}
// ###################
Test test = new Test();
int firstResult = test.TestMethod(new Blah { Value = 10 });
int secondResult = test.TestMethod(new Blah { Value = 10 }, 10);
Console.WriteLine(firstResult);
Console.WriteLine(secondResult);
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.