클래스에 인스턴스가 하나만 있는지 확인하고 인스턴스에 대한 전역 액세스 지점을 제공합니다.
——"디자인 패턴"
싱글턴 모드의 개념은 매우 간단합니다. C# 언어를 예로 들어 일반적인 싱글톤 작성 방법의 장점과 단점을 나열합니다.
1. 간단한 구현
아아아아
댓글:
스레드에 안전하지 않음
단일 스레드에서 요구 사항 충족
장점:
인스턴스가 Instance 속성 메서드 내부에서 생성되므로 클래스는
추가 기능을 사용하여 객체에 인스턴스가 필요할 때까지 인스턴스화를 수행하지 않을 수 있습니다. 이 접근 방식을 "지연 인스턴스화"라고 합니다. 지연 인스턴스화는 애플리케이션이 시작될 때 불필요한 싱글톤 인스턴스화를 방지합니다.
2. 스레드 안전성
public sealed class Singleton { static Singleton instance = null; public void Show() { Console.WriteLine( "instance function"); } private Singleton() { } public static Singleton Instance { get { if (instance == null) { instance = new Singleton(); } return instance; } } }
댓글:
프로그램에서 동시에 잠긴 유일한 부분 time은 스레드가 들어갈 수 있습니다.
객체 인스턴스는 먼저 들어오는 스레드에 의해 생성됩니다.
나중에 스레드는 들어갈 때 false가 되며(인스턴스 == null) 반환되지 않음 객체 인스턴스 생성
오버헤드가 추가되고 성능이 저하됨
3. 이중 잠금
아아아아
댓글:
멀티 스레드 안전
스레드는 매번 잠기지 않습니다
객체에 처음 액세스할 때까지 인스턴스화를 지연할 수 있습니다.
4. 정적 초기화
public sealed class Singleton { static Singleton instance = null; private static readonly object padlock = new object(); private Singleton() { } public static Singleton Instance { get { lock (padlock) { if (instance == null) { instance = new Singleton(); } } return instance; } } }
댓글:
공용 언어 런타임을 사용하여 변수 초기화를 처리합니다.
공개 정적 속성은 액세스하는 방법을 제공합니다. 인스턴스 전역 액세스 포인트
인스턴스화 메커니즘에 대한 제어가 적음(.NET으로 구현)
정적 초기화는 .NET에서 Singleton을 구현하는 데 선호되는 방법입니다
중요:
정적 생성자에는 액세스 수정자가 없으며 C#에서는 자동으로 이를 비공개로 표시하므로 For private으로 표시해야 합니다. ,
은 개발자가 작성한 코드가 호출되지 않도록 방지하기 위한 것이며 호출은 항상 CLR의 책임입니다.
5. 초기화 지연
public sealed class Singleton { static Singleton instance = null; private static readonly object padlock = new object(); private Singleton() { } public static Singleton Instance { get { if (instance == null) { lock (padlock) { if (instance == null) { instance = new Singleton(); } } } return instance; } } }
댓글:
초기화 작업이 완료되었습니다 중첩 클래스에 의해 이는 정적 멤버를 사용하여 수행되므로 초기화가 지연됩니다.
정적 함수를 호출하는 시점은 클래스가 인스턴스화되거나 정적 멤버가 호출될 때이기 때문에 그리고 .net 프레임워크는 정적 생성자를 호출하여 정적 멤버 변수를 초기화하는데, 그래서 네 번째 방법에 따라 작성하면, Hello 메서드가 다시 호출되면 싱글톤 인스턴스가 인스턴스화됩니다. 이는 우리가 보고 싶은 것이 아닙니다. 왜냐하면 우리는 Hello 메서드만 사용하고 싶을 수도 있기 때문입니다.
참고:
1. 싱글톤 모드의 인스턴스 생성자는 하위 클래스 파생을 허용하도록 보호되도록 설정할 수 있습니다.
2. 싱글톤 모드는 일반적으로 ICloneable 인터페이스를 지원하지 않습니다. 이는 싱글톤 모드의 원래 의도에 어긋나는 여러 개체 인스턴스가 발생할 수 있기 때문입니다.
3. 싱글톤 모드는 일반적으로 직렬화를 지원하지 않습니다. 이는 또한 싱글톤 모드의 원래 의도에 어긋나는 여러 객체 인스턴스로 이어질 수 있기 때문입니다.
4. 싱글톰 모드는 객체 생성 관리만 고려하고, 객체 소멸 관리는 고려하지 않습니다. 가비지 수집과 객체 오버헤드를 지원하는 플랫폼의 경우 일반적으로 객체 파기에 대한 특별한 관리를 수행할 필요가 없습니다.
요약:
1. 클래스 생성을 개선하기보다는 패턴을 제한합니다.
2. 싱글턴 패턴을 이해하고 확장하는 핵심은 "new를 사용하여 클래스 생성자에 대한 사용자의 임의 호출을 제어하는 방법"입니다.
3. 싱글톤을 쉽게 수정하여 몇 가지 인스턴스를 가질 수 있습니다.
위는 싱글턴 패턴과 공통 작문 분석(디자인 패턴 01)의 내용이며, 관련 내용 더 보기 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

C# .NET 개발을 시작하려면 다음과 같은 것이 필요합니다. 1. C#의 기본 지식과 .NET 프레임 워크의 핵심 개념을 이해하십시오. 2. 변수, 데이터 유형, 제어 구조, 기능 및 클래스의 기본 개념을 마스터하십시오. 3. LINQ 및 비동기 프로그래밍과 같은 C#의 고급 기능을 배우십시오. 4. 일반적인 오류에 대한 디버깅 기술 및 성능 최적화 방법에 익숙해 지십시오. 이러한 단계를 통해 C#.NET의 세계를 점차적으로 침투하고 효율적인 응용 프로그램을 작성할 수 있습니다.

C#과 .NET의 관계는 분리 할 수 없지만 같은 것은 아닙니다. C#은 프로그래밍 언어이며 .NET은 개발 플랫폼입니다. C#은 코드를 작성하고 .NET의 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행되는 데 사용됩니다.

C#.NET은 여러 응용 프로그램 개발을 지원하는 강력한 도구 및 라이브러리를 제공하기 때문에 여전히 중요합니다. 1) C#은 .NET 프레임 워크를 결합하여 개발 효율적이고 편리하게 만듭니다. 2) C#의 타입 안전 및 쓰레기 수집 메커니즘은 장점을 향상시킵니다. 3) .NET은 크로스 플랫폼 실행 환경과 풍부한 API를 제공하여 개발 유연성을 향상시킵니다.

C#.NETISVERSATILEFORBOTHWEBBANDDESKTOPDEVENTROMMENT.1) FORWEB, useASP.NETFORRICHINTERFACES.3) FORDESKTOP.3) USEXAMARINFORCROSS-PLATFORMDEEVENTRIMMENT, LINABILEDEV, MACODEDEV, and MACODEDOWS, 및 MACODEDOWS.

C# 및 .NET는 지속적인 업데이트 및 최적화를 통해 신흥 기술의 요구에 적응합니다. 1) C# 9.0 및 .NET5는 레코드 유형 및 성능 최적화를 소개합니다. 2) .NETCORE는 클라우드 네이티브 및 컨테이너화 된 지원을 향상시킵니다. 3) ASP.NETCORE는 최신 웹 기술과 통합됩니다. 4) ML.NET는 기계 학습 및 인공 지능을 지원합니다. 5) 비동기 프로그래밍 및 모범 사례는 성능을 향상시킵니다.

C#.netissuitable forenterprise-levelapplications는 richlibraries, androbustperformance, 그러나 itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical, wherelanguagesslikerustorthightordogrordogrognegrognegrognegrognecross-platformdevelopmentor.

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

드림위버 CS6
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
