Home > Backend Development > C#.Net Tutorial > Example analysis of extension methods in C#

Example analysis of extension methods in C#

黄舟
Release: 2017-06-18 10:24:17
Original
1261 people have browsed it

This article mainly introduces C# extension methods, and analyzes the functions, usage methods and related precautions of C# extension methods in the form of examples. Friends in need can refer to this article

The example describes C# extension methods. Sharing it with everyone for your reference, the details are as follows:

Extension methods

Extension methods enable you to "add" methods to existing types, Without creating a new derived type, recompiling, or otherwise modifying the original type. An extension method is a special kind of static method, but can be called like an instance method on an extension type. For client code written in C# and Visual Basic, there is no significant difference between calling an extension method and calling the method actually defined in the type.

If we have such a requirement, convert the first character of a

string to uppercase, the second character to the nth character to lowercase, and the other characters remain unchanged. So how do we achieve this?

Without extension methods:

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));
    }
  }
}
Copy after login

Use extension methods:

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);
    }
  }
}
Copy after login

Comparison of the above two methods:

1. The code is more convenient when accessing static methods like ToPascal. It acts as if the extended type actually had the instance method.

2. The extension method does not change the code of the extended class, and there is no need to recompile, modify, or derive the extended class

Define the extension method

1. Define a static class to contain extension methods.

2. This class must be visible to client code.
3. Implement the extension method as a static method and give it at least the same visibility as the containing class.
4. The first parameter of the method specifies the type operated by the method; the parameter must start with the this modifier.

Note that the first argument is not specified by the calling code, since it represents the type of

operator being applied, and the compiler already knows the type of object . You only need to provide actual parameters for these two formal parameters via n.

Notes:

1. The extension method must be defined in the static class

2. The
priority of the extension method Lower than class methods with the same name 3. Extension methods are only valid within a specific
namespace 4. Do not abuse extension methods unless necessary

The above is the detailed content of Example analysis of extension methods in C#. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template