")을 파냅니다. 이를 사용하여 특정 데이터 유형으로 채웁니다."/> ")을 파냅니다. 이를 사용하여 특정 데이터 유형으로 채웁니다.">
찾다
백엔드 개발C#.Net 튜토리얼C# 학습 일기 30---일반 클래스, 일반 메서드, 일반 대리자

제네릭을 사용하면 프로그램에서 실제로 사용될 때까지 클래스나 메서드 내 프로그래밍 요소의 데이터 유형 사양 작성을 연기할 수 있습니다. 즉, 클래스나 메소드를 선언할 때 사용자가 전달하려는 매개변수의 유형이 무엇인지 모르기 때문에 해당 유형이 전달되는 곳에 "구멍("")을 파냅니다. 이를 사용하여 특정 데이터 유형으로 채웁니다.

일반 클래스:

앞서 배운 지식을 바탕으로 클래스를 정의합니다.

 class Data
          {
              public int  n_data;
           }

이때 n_data의 데이터 유형은 int 유형으로 결정되었으므로 값을 할당할 때 int 유형만 가능합니다. 다음 일반 클래스로 다시 작성하면:

 

 class Data<T>
             {
               public T n_data;
             }

, n_data의 데이터 유형은 아직 어떤 유형인지 확실하지 않으므로 값을 할당할 때 n_data의 유형인 T를 지정해야 합니다. 즉, 피트를 채우려면

 

 Data<int> data = new Data<int>();    //指定T为int
  Data<string> data = new Data<string>();  //指定T为string

물론 위의 예에서는 T를 배열로 지정할 수 없습니다. 원하는 경우 n_data의 유형이 배열인 경우 다음 예를 충족할 수 있습니다.

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Example  
{  
    class Data<T> //泛型类  
    {  
        public T[] n_data; //泛型变量  
       public Data(int size) //构造方法,new的时候调用构造方法开辟空间  
        {   
          n_data = new T[size];    
        }  
        //输入  
       public void setdata(int index,T value)  
       {  
           n_data[index] = value;  
       }  
        //输出  
       public T getdata(int x)  
       {   
          return n_data[x];  
       }  
    }  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Data<int> data = new Data<int>(5);  
            data.n_data[2] = 2;  
           Console.WriteLine(data.n_data[2]);  
        }  
    }  
}

결과는 다음과 같습니다. 2

일반 방법:

스왑 교환 방법을 예로 들어 보겠습니다. C++의 스왑 함수는 다음과 같이 작성됩니다.

#include <iostream>  
  
using namespace std;  
template <typename T>  
void swap1(T &a,T &b) //也可以看作泛型  
{  
  T temp;  
  temp = a;  
  a = b;  
  b = temp;  
}  
int main()  
{  
    int a=0,b=1;  
    swap1(a,b);  
    cout<<a<<"\t"<<b<<endl;  
      return 0;  
}

결과: 1 0
a, b가 문자형인 경우 위의 기능도 적용 가능합니다. C#swap 방법은 다음과 같습니다:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Example  
{  
    class data  
    {//swap方法,ref是按地址传递  
        public static void swap<T>(ref T a, ref T b)  
        {  
            T temp;  
            temp = a;  
            a = b;  
            b = temp;  
        }  
        static void Main(string[] args)  
        {  
            string a = "HC";  
            string b = "666";  
            swap(ref a,ref b);  
            Console.WriteLine(a+"\t"+b); //结果 666    HC  
        }  
    }  
}

결과: 666 HC C+++

일반 대리자:

와 매우 유사합니다. 일반 대리자도 입력하고 위의 예를 계속 진행합니다:

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
  
namespace Example  
{  
    public delegate void MyDelegate<T>();//泛型委托  
    class Data<T>  
    {  
        private T a;  
        private T b;  
        public void setvalue(T x, T y)  
        {  
            a = x;  
            b = y;  
        }  
        //swap方法,ref是按地址传递  
        public void swap()  
        {  
            T temp;  
            temp = a;  
            a = b;  
            b = temp;  
        }  
        public void printvalue()  
        {  
            Console.WriteLine(a + "\t" + b);  
  
        }  
  }  
      class program  
       {   
         static void Main(string[] args)  
          {  
            Data<string> data = new Data<string>();  
            data.setvalue("HC","666");  
            MyDelegate<string> my = new MyDelegate<string>(data.swap);  
            my += data.printvalue;  
            my();  //结果 666  HC        
           }  
          
       }  
        
   }


결과:

C# 학습 일기 30---일반 클래스, 일반 메서드, 일반 대리자

방금 제네릭에 대해 많은 것을 소개했습니다. 실수요? 환영합니다 ^_^

위 내용은 C# 학습일지 30---제네릭 클래스, 제네릭 메소드, 제네릭 델리게이트의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 참고해주세요. (www.php.cn)!


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
C# .net의 미래 : 트렌드와 기회C# .net의 미래 : 트렌드와 기회Apr 29, 2025 am 12:02 AM

C#.NET의 미래 트렌드는 주로 클라우드 컴퓨팅, 마이크로 서비스, AI 및 기계 학습 통합, 크로스 플랫폼 개발의 세 가지 측면에 중점을 둡니다. 1) 클라우드 컴퓨팅 및 마이크로 서비스 : C#.net은 Azure 플랫폼을 통해 클라우드 환경 성능을 최적화하고 효율적인 마이크로 서비스 아키텍처의 구성을 지원합니다. 2) AI 및 기계 학습의 통합 : ML.NET 라이브러리의 도움으로 C# 개발자는 기계 학습 모델을 응용 프로그램에 포함시켜 지능형 애플리케이션의 개발을 촉진 할 수 있습니다. 3) 크로스 플랫폼 개발 : .NETCORE 및 .NET5를 통해 C# 응용 프로그램은 Windows, Linux 및 MacOS에서 실행되어 배포 범위를 확장 할 수 있습니다.

C# .NET 개발 오늘 : 트렌드 및 모범 사례C# .NET 개발 오늘 : 트렌드 및 모범 사례Apr 28, 2025 am 12:25 AM

C#.NET 개발의 최신 개발 및 모범 사례에는 다음이 포함됩니다. 1. 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키고 Async 및 Await 키워드를 사용하여 비 차단 코드를 단순화합니다. 2. LINQ는 지연된 실행 및 표현 트리를 통해 데이터를 효율적으로 조작하는 강력한 쿼리 기능을 제공합니다. 3. 성능 최적화 제안에는 비동기 프로그래밍 사용, LINQ 쿼리 최적화, 합리적으로 메모리 관리, 코드 가독성 및 유지 보수 개선 및 단위 테스트 작성이 포함됩니다.

C# .NET : .NET 생태계로 응용 프로그램을 구축합니다C# .NET : .NET 생태계로 응용 프로그램을 구축합니다Apr 27, 2025 am 12:12 AM

.NET을 사용하여 응용 프로그램을 구축하는 방법? .NET을 사용하여 응용 프로그램 빌드 응용 프로그램은 다음 단계를 통해 달성 할 수 있습니다. 1) C# 언어 및 크로스 플랫폼 개발 지원을 포함한 .NET의 기본 사항을 이해합니다. 2) .NET 생태계의 구성 요소 및 작동 원리와 같은 핵심 개념을 배우십시오. 3) 간단한 콘솔 애플리케이션에서 복잡한 WebApis 및 데이터베이스 운영에 이르기까지 기본 및 고급 사용을 마스터합니다. 4) 구성 및 데이터베이스 연결 문제와 같은 일반적인 오류 및 디버깅 기술에 익숙해야합니다. 5) 응용 프로그램 성능 최적화 및 비동기 프로그래밍 및 캐싱과 같은 모범 사례.

다양한 .NET 언어로서 C# : 응용 프로그램 및 예제다양한 .NET 언어로서 C# : 응용 프로그램 및 예제Apr 26, 2025 am 12:26 AM

C#은 엔터프라이즈 레벨 애플리케이션, 게임 개발, 모바일 응용 프로그램 및 웹 개발에서 널리 사용됩니다. 1) 엔터프라이즈 레벨 애플리케이션에서 C#은 종종 asp.netcore가 webapi를 개발하는 데 사용됩니다. 2) 게임 개발에서 C#은 Unity 엔진과 결합되어 역할 제어 및 기타 기능을 실현합니다. 3) C#은 코드 유연성 및 응용 프로그램 성능을 향상시키기 위해 다형성 및 비동기 프로그래밍을 지원합니다.

웹, 데스크탑 및 모바일 개발 용 C# .net웹, 데스크탑 및 모바일 개발 용 C# .netApr 25, 2025 am 12:01 AM

C# 및 .NET은 웹, 데스크탑 및 모바일 개발에 적합합니다. 1) 웹 개발에서 ASP.NETCORE는 크로스 플랫폼 개발을 지원합니다. 2) 데스크탑 개발은 WPF 및 Winforms를 사용하여 다양한 요구에 적합합니다. 3) 모바일 개발은 Xamarin을 통한 크로스 플랫폼 응용 프로그램을 실현합니다.

C# .NET Ecosystem : 프레임 워크, 라이브러리 및 도구C# .NET Ecosystem : 프레임 워크, 라이브러리 및 도구Apr 24, 2025 am 12:02 AM

C#.NET 생태계는 개발자가 응용 프로그램을 효율적으로 구축 할 수 있도록 풍부한 프레임 워크 및 라이브러리를 제공합니다. 1.asp.netCore는 고성능 웹 애플리케이션을 구축하는 데 사용되며 2.entityFrameworkCore는 데이터베이스 작업에 사용됩니다. 이러한 도구의 사용 및 모범 사례를 이해함으로써 개발자는 응용 프로그램의 품질과 성능을 향상시킬 수 있습니다.

C# .NET 애플리케이션 배포 Azure/AWS : 단계별 안내서C# .NET 애플리케이션 배포 Azure/AWS : 단계별 안내서Apr 23, 2025 am 12:06 AM

C# .NET 앱을 Azure 또는 AWS에 배포하는 방법은 무엇입니까? 답은 Azureappservice와 Awelasticbeanstalk를 사용하는 것입니다. 1. Azure에서 Azureappservice 및 AzurePipelines를 사용하여 배포를 자동화하십시오. 2. AWS에서 Amazon Elasticbeanstalk 및 Awslambda를 사용하여 배포 및 서버리스 컴퓨팅을 구현하십시오.

C# .net : 강력한 프로그래밍 언어 소개C# .net : 강력한 프로그래밍 언어 소개Apr 22, 2025 am 12:04 AM

C#과 .NET의 조합은 개발자에게 강력한 프로그래밍 환경을 제공합니다. 1) C#은 다형성 및 비동기 프로그래밍을 지원합니다. 2) .net은 크로스 플랫폼 기능과 동시 처리 메커니즘을 제공하여 데스크탑, 웹 및 모바일 애플리케이션 개발에 널리 사용됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구