C#의 확장 메서드 분석 예

黄舟
풀어 주다: 2017-06-18 10:24:17
원래의
1219명이 탐색했습니다.

이 글에서는 주로 C# 확장 방법을 소개하고, C# 확장 방법의 기능, 사용법, 관련 주의 사항을 예제 형식으로 분석합니다. 필요한 친구들은

이 글에서 예제를 통해 C# 확장 방법을 참고할 수 있습니다. 참조용으로 다음과 같이 공유하세요.

확장 메서드

확장 메서드를 사용하면 새 파생 형식을 생성하거나 재컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있습니다. 확장 메서드는 특별한 종류의 정적 메서드이지만 확장 형식의 인스턴스 메서드처럼 호출될 수 있습니다. C# 및 Visual Basic으로 작성된 클라이언트 코드의 경우 확장 메서드를 호출하는 것과 형식에 실제로 정의된 메서드를 호출하는 것 사이에는 큰 차이가 없습니다.

이러한 요구 사항이 있는 경우 문자열의 첫 번째 문자를 대문자로 변환하고 n번째 문자의 두 번째 문자를 소문자로 변환하고 나머지는 변경하지 않은 상태로 유지하면 어떻게 달성할 수 있습니까?

확장 방법을 사용하지 않음:

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));
    }
  }
}
로그인 후 복사

확장 방법 사용:

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);
    }
  }
}
로그인 후 복사

위 두 가지 방법 비교:

1. 코드 ToPascal에 액세스 중입니다. 이러한 정적 메소드 더 편리합니다. 이는 확장 유형에 실제로 인스턴스 메소드가 있는 것처럼 작동합니다.
2. 확장 메서드는 확장 클래스의 코드를 변경하지 않으며 확장 클래스를 다시 컴파일, 수정, 파생할 필요가 없습니다.

확장 메서드 정의

1. 정적 클래스를 다음과 같이 정의합니다. 확장 메소드를 포함합니다.
2. 이 클래스는 클라이언트 코드에 표시되어야 합니다.
3. 확장 메서드를 정적 메서드로 구현하고 최소한 포함 클래스와 동일한 가시성을 제공합니다.
4. 메소드의 첫 번째 매개변수는 메소드에 의해 작동되는 유형을 지정합니다. 매개변수는 this 수정자로 시작해야 합니다.

첫 번째 인수는 연산자가 적용되는 유형을 나타내고 컴파일러가 이미 객체의 유형을 알고 있기 때문에 호출 코드에서 지정되지 않습니다. n을 통해 이 두 형식 매개변수에 대한 실제 인수만 제공하면 됩니다.

참고:

1. 확장 메서드는 정적 클래스에서 정의되어야 합니다.
2. 확장 메서드의 우선 순위는 동일한 이름을 가진 클래스 메서드보다 낮습니다. 3. 확장 메서드는 특정
네임스페이스 유효 4. 필요한 경우가 아니면 확장 방법을 남용하지 마세요

위 내용은 C#의 확장 메서드 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿