집 >백엔드 개발 >C#.Net 튜토리얼 >C# 프로그래밍 및 Visual Studio 사용 팁(2부)
검색 엔진을 통해 이 기사를 찾았다면 먼저 이 시리즈의 첫 번째 기사를 읽어 보시기 바랍니다. 이 기사는 이 시리즈의 두 번째 기사입니다. 오늘은 더욱 풍부한 C#과 Visual Studio 프로그래밍을 살펴보겠습니다. 기술에.
1. DataTable.HasRows
어떤 프레임워크에도 속하지 않지만 확장 메서드를 통해 이러한 메서드를 쉽게 모방할 수 있으며, 이는 데이터 테이블 개체 여부를 원래 확인하지 않습니다. 비어 있거나 행 수 코드이지만 애플리케이션 코드를 단순화할 수 있습니다. 다음은 코드 조각입니다.
<CODE> public static bool HasRows(this DataTable dataTable) { return dataTable.IsNull() ? false : (dataTable.Rows.Count > 0); } public static bool IsNull(this object o) { return (o == null); } To use: If(dataTable.HasRows()) { … } </CODE>
다른 규칙은 여전히 확장 메서드와 동일합니다.
2.ToTitleCase
이 방법은 각 단어의 첫 글자를 대문자로 변환하고 나머지 글자를 소문자로 변환합니다. 예를 들어 "look below for a 샘플"은 "Look"으로 변환됩니다. 아래 샘플"에서 TextInfo는 System.Globalization 네임스페이스의 일부이지만 다음과 같은 문제가 있습니다.
현재 문화권
입력 문자열이 모두 대문자인 경우
아래 확장 방법은 이러한 결함을 모두 고려합니다.
rree3. 명시적 및 암시적 인터페이스 구현
이것이 중요합니까? 예, 매우 중요합니다. 둘 사이의 구문 차이를 알고 계십니까? 사실, 그들 사이에는 근본적인 차이점이 있습니다. 클래스의 암시적 인터페이스 구현은 기본적으로 클래스의 객체나 인터페이스에서 액세스할 수 있는 공용 메서드로 설정됩니다. 클래스의 명시적 인터페이스 구현은 기본적으로 전용 메서드이며, 클래스 개체를 통해서가 아니라 인터페이스를 통해서만 액세스할 수 있습니다. 다음은 샘플 코드입니다.
<CODE> public static string ToTitleCase(this string inputString) { return Thread.CurrentThread.CurrentCulture.TextInfo. ToTitleCase((inputString ?? string.Empty).ToLower()); } </CODE>
4. 자동 속성
하나의 공개 멤버와 두 개의 비공개 멤버가 포함된 속성을 바꾸는 가장 좋은 방법입니다.
Tab 키를 두 번 누르면(코드 조각 기능을 활성화해야 함) 자동 속성의 이름을 얻기 위해 Tab 키를 다시 누릅니다. 다음 코드
<CODE> INTERFACE public interface IMyInterface { void MyMethod(string myString); } CLASS THAT IMPLEMENTS THE INTERFACE IMPLICITLY public MyImplicitClass: IMyInterface { public void MyMethod(string myString) { /// } } CLASS THAT IMPLEMENTS THE INTERFACE EXPLICITLY public MyExplicitClass: IMyInterface { void IMyInterface.MyMethod(string myString) { /// } } MyImplicitClass instance would work with either the class or the Interface: MyImplicitClass myObject = new MyImplicitClass(); myObject.MyMethod(""); IMyInterface myObject = new MyImplicitClass(); myObject.MyMethod(""); MyExplicitClass would work only with the interface: //The following line would not work. MyExplicitClass myObject = new MyExplicitClass(); myObject.MyMethod(""); //This will work IMyInterface myObject = new MyExplicitClass(); myObject.MyMethod(""); </CODE>
는
<CODE> private double _total; public double Total { get { return _total; } set { _total = value; } } </CODE>
가 됩니다. 설계에 따라 액세스 지정자를 계속 적용할 수 있으며 컴파일러는 전용 멤버 변수를 생성해야 합니다.
5. 강력한 Path.Combine
Path.Combine은 강력한 기능으로 후행 슬래시 및 경로 관련 문제를 제거하여 경로 문자열을 더욱 연속적으로 만듭니다. 문자열 경로 매개변수를 포함합니다.
경로에 유효한 구분 기호나 공백이 있는지 걱정할 필요가 없으며 경로를 병합할 때 문자열 연결을 처리할 필요가 없습니다.
6. 클래스에 "Override" 메서드를 작성하는 빠른 방법
코드 편집기에 override를 입력하고 스페이스바를 누르면 클래스 기반 재정의 메서드 목록이 표시됩니다. , 그림 2와 같이.
그림 1 재정의 가능한 메서드 목록
7. 확장 구성 파일 사용
app.config(애플리케이션용) 및 web. config 구성 파일을 사용하면 복잡한 애플리케이션 수준 설정을 처리할 수 있지만 여전히 다양한 환경 설정에서 직면하는 다양한 문제를 처리해야 합니다. 여기서는 개발, 테스트 및 프로덕션 환경의 설정을 참조합니다.
코드의 일부를 분석, 테스트, 디버그하려면 특정 환경으로 돌아가야 하고, 그 과정의 모든 설정과 조정이 지루합니다.
예를 들어 모든 복원에는 ConnectionStrings(연결 문자열) 재설정이 필요할 수 있습니다. 이제 외부 파일 참조를 통해 ConfigSource 속성을 사용하여 이 문제를 해결할 수 있습니다. 예를 들어 다음 코드는 development.config 외부 구성 파일을 참조합니다.
<CODE> public double Total { get; set; } </CODE>
AppSettings 섹션에서도 이 유용한 속성을 사용할 수 있습니다.
8. String.Split 메서드의 한계 극복
String.Split은 문자열을 분리하는 가장 이상적인 방법이지만, 우리가 아는 한 다음과 같은 몇 가지 제한 사항도 있습니다. "||" 또는 "::" 문자를 사용할 수 없으면 키보드의 고유한 단일 문자를 구분 기호로 사용해야 합니다. 이 단점은 RegEx 라이브러리에서 제공하는 Split 메서드를 사용하여 극복할 수 있습니다. RegEx 분할을 통해 "||" 문자열을 구분합니다.
HTML 보기인 경우 디자인 보기에서 보려는 요소를 찾은 다음 디자인 보기로 전환하면 보려는 요소가 선택되어야 합니다. 또한 이제 속성 창에 속성이 표시됩니다. 선택한 요소의
마찬가지로 디자인 보기에서 요소를 선택한 다음 코드 보기로 전환하면 선택한 요소에 해당하는 HTML 코드가 강조 표시되어야 합니다. 10. 데이터베이스에서 데이터를 빠르게 검색합니다. 데이터 테이블은 행을 선택하는 Find 및 Select 메서드를 지원하지만 DataView 메서드가 제공하는 FindRows만큼 사용하기 쉽지 않습니다. 정렬 열에 생성된 인덱스를 사용하므로 속도가 더 빠릅니다.이 팁이 귀중한 프로그래밍 시간을 절약하는 데 도움이 되기를 바랍니다. 한번 시도해 보세요!