Laden...

String.Trim()-Methode (überschreiben und) erweitern

Erstellt von tikra vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.031 Views
tikra Themenstarter:in
185 Beiträge seit 2007
vor 13 Jahren
String.Trim()-Methode (überschreiben und) erweitern

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

2.891 Beiträge seit 2004
vor 13 Jahren

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

tikra Themenstarter:in
185 Beiträge seit 2007
vor 13 Jahren

Ich habe so ein Wort im Kopf: override. Kann ich die Methode überschreiben?

Wenn ja, wie?

2.891 Beiträge seit 2004
vor 13 Jahren

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

Gelöschter Account
vor 13 Jahren

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...

1.002 Beiträge seit 2007
vor 13 Jahren

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

tikra Themenstarter:in
185 Beiträge seit 2007
vor 13 Jahren

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.)

tikra Themenstarter:in
185 Beiträge seit 2007
vor 13 Jahren

Mit zusätzlicher Methode (+1 Überladung):

1.552 Beiträge seit 2010
vor 13 Jahren

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

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

tikra Themenstarter:in
185 Beiträge seit 2007
vor 13 Jahren

Okay, sorry.

Trotzdem ist es hiermit etwas besser dokumentiert, wie ich finde.

1.044 Beiträge seit 2008
vor 13 Jahren

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