C# 동적

WBOY
풀어 주다: 2024-09-03 15:32:36
원래의
732명이 탐색했습니다.

컴파일 시 확인을 피하기 위해 C# 4.0 릴리스에서는 동적 유형이라는 새로운 유형이 도입되었습니다. 기본적으로 유형은 컴파일러의 표현식 값을 기반으로 할당되는 반면 이 동적 유형은 컴파일 시간 동안 유형 검사를 거치지 않습니다. 동적 키워드는 동적 유형을 정의하는 데 사용되며 동적 유형은 컴파일러에 의해 객체 유형으로 컴파일되고 실제 동적 유형은 런타임 중에 확인됩니다.

S구문:

dynamic variable_name;
로그인 후 복사

C#에서 동적 유형 작업

  • C# 4.0 출시와 함께 동적 유형이 도입되었습니다. Dynamic 유형을 사용하면 컴파일 시 유형 검사를 피할 수 있습니다.
  • 런타임 중에 컴파일러가 유형을 확인합니다.
  • 동적 유형의 동작은 객체 유형의 동작과 같습니다.
  • GetType() 메소드를 사용하여 동적 변수의 실제 유형을 가져올 수 있습니다.
  • 동적 유형의 유형은 오른쪽 값에 따라 런타임 중에 변경됩니다.
  • 클래스 객체가 동적 유형에 할당되면 컴파일러는 올바른 메소드와 클래스 객체를 보유하는 속성의 이름을 확인하지 않습니다.
  • 동적 유형 매개변수를 메소드에 전달할 수도 있으므로 런타임 중에 메소드에서 모든 유형의 매개변수를 허용할 수 있습니다.
  • 속성과 메서드가 호환되지 않으면 런타임 중에 컴파일러에서 예외가 발생합니다.
  • 컴파일 시간 동안 컴파일러가 동적 유형에 대한 유형을 확인하지 않으므로 컴파일 시간 동안 동적 유형에 대해 컴파일러에서 오류가 발생하지 않습니다.

C# 프로그램에서 Dynamic 유형의 사용법을 설명하려면 아래 예를 고려하십시오.

using System;
//a class called program is defined
class program
{
//main method is called
static public void Main()
{
// Dynamic variables are declared
dynamic val1 = 1234;
dynamic val2 = 1234.40;
dynamic val3 = false;
dynamic val4 = "Hello";
//GetType() method is used to obtain the actual type of the dynamic variables used earlier
Console.WriteLine("The actual type of val1 is: {0}", val1.GetType().ToString());
Console.WriteLine("The actual type of val2 is: {0}",
val2.GetType().ToString());
Console.WriteLine("The actual type of val3 is: {0}",
val3.GetType().ToString());
Console.WriteLine("The actual type of val4 is: {0}",
val4.GetType().ToString());
}
}
로그인 후 복사

출력:

C# 동적

위 프로그램에서는 프로그램이 정의된 클래스입니다. 그런 다음 기본 메서드가 호출됩니다. 그런 다음 실제 유형을 알 수 없는 동적 변수가 선언됩니다. 그런 다음 GetType() 메서드를 사용하여 이전에 사용된 동적 변수의 실제 유형을 가져옵니다. 프로그램의 출력은 위의 스냅샷과 같습니다.

아래에 언급된 예는 다음과 같습니다.

예시 #1

메서드에 전달할 수 있는 동적 유형 매개변수의 사용을 보여주는 C# 프로그램

코드:

using System;
//a class called program is defined
class program
{
// a method called add is defined to which dynamic type variables are passed as parameters
public static void add(dynamic r1, dynamic r2)
{
Console.WriteLine(r1 + r2);
}
// Main method is called
static public void Main()
{
//add method is called to add whatever is passed as parameters to the method since the method accepts dynamic type variables
add("H", "I");
add("Welcome to", " dynamic type");
add(20, 20);
add(20.5, 1.5);
add(100, "fun");
}
}
로그인 후 복사

출력:

C# 동적

위 프로그램에서는 프로그램이 정의된 클래스입니다. 그런 다음 동적 유형 변수가 실제 유형을 알 수 없는 매개변수로 전달되는 add라는 메소드가 정의됩니다. 그런 다음 기본 메서드가 호출됩니다. 그런 다음 add 메소드가 호출되어 메소드에 매개변수로 전달된 모든 항목을 추가합니다. 메소드는 동적 유형 변수를 허용하기 때문입니다. 프로그램의 출력은 위의 스냅샷에 표시된 것과 같습니다.

예시 #2

메서드에 전달할 수 있는 동적 유형 매개변수의 사용을 보여주는 C# 프로그램:

코드:

using System;
//a namespace called example is defined
namespace example
{
//a class called program is defined
class Program
{
//main method is called
static void Main(string[] args)
{
//different types of values are passed as a parameter to GetDetails method
GetDet("Learning is fun and welcome to learning dynamic type in C#");
GetDet(false);
GetDet(100.22);
GetDet(20);
Console.ReadLine();
}
//a method called getdetails is defined to which dynamic type variable is passed as a parameter so it accepts any type of parameter
static void GetDet(dynamic r)
{
Console.WriteLine(r);
}
}
}
로그인 후 복사

출력:

C# 동적

위 프로그램에는 example이라는 네임스페이스가 정의되어 있습니다. 그러면 프로그램이 정의된 클래스입니다. 그런 다음 기본 메서드가 호출됩니다. 그런 다음 나중에 정의되는 GetDet 메소드가 호출되며, 여기에 동적 유형 변수가 실제 유형이 알려지지 않은 매개변수로 전달됩니다. 그런 다음 동적 유형 변수가 매개변수로 전달되는 GetDet 메소드가 정의되어 모든 유형의 매개변수를 허용합니다. 프로그램의 출력은 위의 스냅샷과 같습니다.

동적 유형을 사용하면 여러 가지 장점이 있습니다. 그들은:

  • C#에서 동적 유형을 사용하면 다른 동적 언어와의 통신이 더 간단해집니다.
  • 어떤 객체 유형이 예상되는지 모를 경우 C#에서 API 호출의 응답을 단순화할 수 있습니다.
  • C#의 동적 유형을 사용하면 여러 언어 간에 사용할 수 있는 라이브러리를 만들 수 있습니다.
  • 주요 관심사가 속도가 아닌 경우 C#에서 동적을 사용하여 일반적인 솔루션을 만들 수 있습니다.
  • 리플렉션 코드는 동적을 사용하여 대체하고 더 간단하게 만들 수 있습니다.

결론

이 튜토리얼에서는 정의를 통해 C#의 동적 유형 개념, C#의 동적 유형 구문, 프로그래밍 예제 및 출력을 통해 C#의 동적 유형 작동, C#에서 동적 유형 사용의 이점을 이해합니다.

위 내용은 C# 동적의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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