Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse von Erweiterungsmethoden in C#

Beispielanalyse von Erweiterungsmethoden in C#

黄舟
黄舟Original
2017-06-18 10:24:171214Durchsuche

Dieser Artikel stellt hauptsächlich C#-Erweiterungsmethoden vor und analysiert die Funktionen, Verwendungsmethoden und zugehörigen Vorsichtsmaßnahmen von C#-Erweiterungsmethoden in Form von Beispielen

hier Artikel Das Beispiel beschreibt C#-Erweiterungsmethoden. Geben Sie es wie folgt als Referenz an alle weiter:

Erweiterungsmethoden

Erweiterungsmethoden ermöglichen Ihnen das „Hinzufügen“ von Methoden zu vorhandenen Typen. Ohne einen neuen abgeleiteten Typ zu erstellen, den ursprünglichen Typ neu zu kompilieren oder anderweitig zu ändern. Eine Erweiterungsmethode ist eine spezielle Art statischer Methode, kann jedoch wie eine Instanzmethode für einen Erweiterungstyp aufgerufen werden. Bei in C# und Visual Basic geschriebenem Clientcode gibt es keinen wesentlichen Unterschied zwischen dem Aufruf einer Erweiterungsmethode und dem Aufruf der tatsächlich im Typ definierten Methode.

Wenn wir eine solche Anforderung haben, wandeln wir das erste Zeichen einer Zeichenfolge in Großbuchstaben um, das zweite Zeichen in Kleinbuchstaben und die anderen Zeichen bleiben unverändert das erreichen?

Ohne Erweiterungsmethoden:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
  //抽象出静态StringHelper类
  public static class StringHelper
  {
    //抽象出来的将字符串第一个字符大写,从第一个到第len个小写,其他的不变的方法
    public static string ToPascal(string s,int len)
    {
      return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
    }
  }
  class Program
  {
    static void Main(string[] args)
    {
      string s1 = "aSDdAdfGDFSf";
      string s2 = "sbfSDffsjG";
      Console.WriteLine(StringHelper.ToPascal(s1,3));
      Console.WriteLine(StringHelper.ToPascal(s2, 5));
    }
  }
}

Mit Erweiterungsmethoden:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtraMethod
{
  class Program
  {
    static void Main(string[] args)
    {
      string s1 = "aSDdAdfGDFSf";
      string s2 = "sbfSDffsjG";
      Console.WriteLine(s1.ToPascal(3));
      Console.WriteLine(s2.ToPascal(5));
    }
  }
  //扩展类,只要是静态就可以
  public static class ExtraClass
  {
    //扩展方法--特殊的静态方法--为string类型添加特殊的方法ToPascal
    public static string ToPascal(this string s, int len)
    {
      return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);
    }
  }
}

Vergleich der beiden oben genannten Methoden:

1. Wenn der Code auf eine statische Methode wie ToPascal zugreift, ist es bequemer . Es verhält sich so, als ob der erweiterte Typ tatsächlich die Instanzmethode hätte.
2. Die Erweiterungsmethode ändert den Code der erweiterten Klasse nicht und es besteht keine Notwendigkeit, die erweiterte Klasse neu zu kompilieren, zu ändern oder abzuleiten

Definieren Sie die Erweiterungsmethode

1. Definieren Sie eine statische Klasse, die Erweiterungsmethoden enthält.
2. Diese Klasse muss für den Clientcode sichtbar sein.
3. Implementieren Sie die Erweiterungsmethode als statische Methode und geben Sie ihr mindestens die gleiche Sichtbarkeit wie die enthaltende Klasse.
4. Der erste Parameter der Methode gibt den von der Methode betriebenen Typ an; der Parameter muss mit dem Modifikator this beginnen.

Beachten Sie, dass das erste Argument nicht durch den aufrufenden Code angegeben wird, da es den Typ des angewendeten -Operators darstellt und der Compiler den Typ des Objekts . Für diese beiden Formalparameter müssen Sie lediglich Aktualparameter über n bereitstellen.

Hinweise:

1. Erweiterungsmethoden müssen in einer statischen Klasse definiert werden

2. Die
Priorität von Erweiterungsmethoden Niedriger als die Klassenmethode mit demselben Namen 3. Erweiterungsmethoden sind nur innerhalb eines bestimmten
Namespace gültig 4. Missbrauchen Sie Erweiterungsmethoden nicht, es sei denn, dies ist erforderlich

Das obige ist der detaillierte Inhalt vonBeispielanalyse von Erweiterungsmethoden in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn