String과 같은 C # 기본 제공 유형을 확장하는 방법은 무엇입니까?
인사말 모든 사람이 ... 내가 필요 . 그러나 문자열의 끝이나 시작 부분뿐만 아니라 문자열 자체 내에서 반복되는 모든 공백을 제거하고 싶습니다. 다음과 같은 방법으로 할 수 있습니다.Trim
String
public static string ConvertWhitespacesToSingleSpaces(string value)
{
value = Regex.Replace(value, @"\s+", " ");
}
내가 여기서 얻은 것 . 하지만이 코드 조각이 String.Trim()
자체적 으로 호출되기를 원 하므로 Trim
메서드 를 확장하거나 오버로드하거나 재정의해야한다고 생각합니다. 그렇게 할 수 있는 방법이 있습니까?
미리 감사드립니다.
string.Trim ()을 확장 할 수 없기 때문에. 여기 에 설명 된대로 공백을 자르고 줄이는 Extension 메서드를 만들 수 있습니다.
namespace CustomExtensions
{
//Extension methods must be defined in a static class
public static class StringExtension
{
// This is the extension method.
// The first parameter takes the "this" modifier
// and specifies the type for which the method is defined.
public static string TrimAndReduce(this string str)
{
return ConvertWhitespacesToSingleSpaces(str).Trim();
}
public static string ConvertWhitespacesToSingleSpaces(this string value)
{
return Regex.Replace(value, @"\s+", " ");
}
}
}
그렇게 사용할 수 있습니다
using CustomExtensions;
string text = " I'm wearing the cheese. It isn't wearing me! ";
text = text.TrimAndReduce();
당신에게 준다
text = "I'm wearing the cheese. It isn't wearing me!";
가능할까요? 예,하지만 확장 방법 만 사용
클래스 System.String
는 봉인되어 있으므로 재정의 또는 상속을 사용할 수 없습니다.
public static class MyStringExtensions
{
public static string ConvertWhitespacesToSingleSpaces(this string value)
{
return Regex.Replace(value, @"\s+", " ");
}
}
// usage:
string s = "test !";
s = s.ConvertWhitespacesToSingleSpaces();
There's a yes and a no to your question.
Yes, you can extend existing types by using extension methods. Extension methods, naturally, can only access the public interface of the type.
public static string ConvertWhitespacesToSingleSpaces(this string value) {...}
// some time later...
"hello world".ConvertWhitespacesToSingleSpaces()
No, you cannot call this method Trim(). Extension methods do not participate in overloading. I think a compiler should even give you a error message detailing this.
Extension methods are only visible if the namespace containing the type that defines the method is using'ed.
public static class MyExtensions
{
public static string ConvertWhitespacesToSingleSpaces(this string value)
{
return Regex.Replace(value, @"\s+", " ");
}
}
Besides using extension methods -- likely a good candidate here -- it is also possible to "wrap" an object (e.g. "object composition"). As long as the wrapped form contains no more information than the thing being wrapped then the wrapped item may be cleanly passed through implicit or explicit conversions with no loss of information: just a change of type/interface.
Happy coding.
참고URL : https://stackoverflow.com/questions/4910108/how-to-extend-c-sharp-built-in-types-like-string
'Program Tip' 카테고리의 다른 글
인덱스 배열의 범위를 벗어난 것입니다. (0) | 2020.10.04 |
---|---|
경고 : 안전하지 않은 스타일 값 URL 삭제 (0) | 2020.10.04 |
jQuery-요소 내부에서 요소 선택 (0) | 2020.10.04 |
Swift에서 배열의 모든 멤버를 동일한 값으로 초기화하는 방법은 무엇입니까? (0) | 2020.10.04 |
첫 번째를 제외한 모든 하위 요소를 선택합니다. (0) | 2020.10.04 |