C#의 익명 개체, var 및 동적 유형 동적에 대한 자세한 설명
C#의 발전으로 언어의 내용은 계속해서 풍부해지고, 개발은 더욱 편리해지고 빨라지며, C#의 예리함은 의심할 여지 없이 드러납니다. C# 언어는 탄생부터 강력한 형식의 언어였습니다. 이러한 성격은 오늘날에도 변하지 않았고 앞으로도 변하지 않을 것이라고 생각합니다. 강력한 유형의 언어이므로 작성된 모든 프로그램은 다음 기본 조건을 충족해야 합니다.
1. 변수 선언은 해당 유형을 나타내야 합니다.
2. 변수 유형이 지워진 후에는 런타임 중에 해당 유형을 변경할 수 없습니다. 코드는 다음과 같습니다.
public class Student { public string Name { get; set; } public int Age { get; set; } public string Like { get; set; } }
static void Main(string[] args) { int a = 10; string s = "abc"; Student student = new Student(); //下面出现编译错误,变量类型在声明后无法再变更 s = a; student = s; a = 10.1f; }
그러나 실제 개발에서는 다음과 같은 일반적인 문제에 직면하는 경우가 많습니다.
1. 대규모 프로그램에서는 특정 또는 극소수(3개 이하)만 존재합니다. 다른 곳에서는 더 이상 필요하지 않은 특정 유형(예: 위의 Student) Student 유형을 별도로 선언하려면 이 유형을 사용할 때 필요한 코드의 양이 코드의 양을 초과할 수 있으며 투자 산출 비율이 비용 효율적이지 않습니다.
2. 프로그램에서는 특정 유형의 개체의 일부 속성이나 메서드만 작업에 참여해야 합니다. 이 경우 이러한 유형의 개체를 프로그램에 필요한 일부 속성과 메서드를 포함하는 개체로 일시적으로 변환하면 프로그램을 더욱 간소화할 수 있습니다.
3. 다른 상황... 아직 눈치채지 못했습니다... 추가해 주셔서 감사합니다...
C# 실제 개발에서 위의 일반적인 문제, JavaScript 개발에서 다음과 같은 더 나은 솔루션이 있습니다.
//在此处js中需要模拟一个学生对象 student = {"name":"张三","age":20,"like":"LOL"}; //在此处js中需要模拟一个老师对象 teacher = {"name":"李老师","like":"没收学生手机,自己LOL"}; //此处需要将学生student转换成只有name和age的对象 person = {"name":student.name,"age":student.age};
위의 js 구문이 익숙하지 않은 경우 Baidu에 가서 "json 구문"을 검색하면 매우 간단하고 중요하다는 것을 알려드립니다.
익명 객체(익명 유형)그래서 C#은 버전 3.0에서 JavaScript 스크립팅 언어의 문법적 장점을 흡수하고 이에 따라 C#을 업그레이드하여 이 문법 형식을 지원합니다(
C#은 여전히 강력한 형식의 언어입니다). 샘플 코드는 다음과 같습니다. static void Main(string[] args)
{ new {Name="张三",Age=20,Like="LOL"};
}
따라서 개발 과정에서 덜 사용되는 유형에 대해 더 이상 별도의 클래스를 생성할 필요가 없으며 위에서 언급한 문제 1이 해결됩니다 . 지금 생성된 개체는 특정 유형을 지정하지 않으므로
익명 개체라고 합니다.
Var이 여기에 있습니다이제 익명 개체를 사용하려면 변수를 사용하여 이를 참조해야 합니다. 객체를 생성할 때 객체의 유형을 지정하지는 않지만 컴파일러는 컴파일 프로세스 중에 관련 속성과 메서드를 사용하여 유형을 생성하는 데 도움을 줍니다. 이때 컴파일된 타입명은 무작위로 생성된 것이므로 변수 타입을 판별할 수 없다. 예는 다음과 같습니다.
static void Main(string[] args) { //XXX为类型声明 //x为引用变量 XXX x = new {Name="张三",Age=20,Like="LOL"}; }
컴파일러가 생성한 유형 이름은 모르지만
컴파일러가 컴파일 결과를 기반으로 변수 유형을 추론하도록 할 수 있습니다.이때 var 키워드가 사용됩니다: static void Main(string[] args)
{ var x = new {Name="张三",Age=20,Like="LOL"};
}
var 사용 시 주의사항:
2 var에 의해 선언된 변수의 유형은 할당된 후에 결정되며 이후 프로그램에서 다른 유형을 할당할 수 없습니다.
3.var x = new object() 값은 의미가 없습니다. 그러한 코드를 작성하지 마십시오. .............
이제 익명 객체와 var가 있습니다. 추론 유형을 지원하면 위에서 언급한 문제 2를 처리할 수 있습니다. 샘플 코드는 다음과 같습니다.
static void Main(string[] args) { var x = new { Name = "张三", Age = 20, Like = "LOL" }; var s = new { Name = x.Name, Age = x.Age }; }
For 익명 유형의 사용은 일반적으로 메소드의 로컬 부분으로 제한됩니다. 이는
로 이해될 수 있습니다. 사용하는 대로 정의되고 사용 후에는 사라집니다.다음 상황에서는 어떻게 해야 하나요?
static void Main(string[] args) { var x = GetObject(); } private static XXX GetObject() { return new { Name = "张三", Age = 20, Like = "LOL" }; }
Main( x = { Name = , Age = , Like =
동적의 역할:
1. 동적 유형의 의미는 프로그램 작성 및 컴파일 단계에서 해당 개체의 속성이나 메서드가 결정된다는 것입니다. 반사 메커니즘. 따라서 쓰기 단계에서는 구문 검사가 수행되지 않습니다.
2. Dynamic은 필드, 속성, 메서드 매개 변수 및 메서드 반환 값을 선언하는 데 사용할 수 있습니다.
3. Dynamic은 코드를 작성할 때(리플렉션) 무엇인지 알 수 없기 때문에 스마트 프롬프트를 지원하지 않습니다.
동적 선언 변수는 객체 유형 변수로 이해될 수 있습니다. 따라서 동적 변수에 모든 유형의 값을 할당하는 것이 옳습니다. 그러나 변수를 사용하여 속성 값을 얻거나 메서드를 호출하는 경우(이 시점에서 프로그램은 런타임 상태에 있어야 함) CLR은 ( 반영) 호출된 속성이나 메서드가 존재하는지 여부에 따라 런타임 예외가 보고되지 않습니다.
dynamic은 Asp.net Mvc 웹 개발의 모든 곳에서 사용됩니다. 복잡해 보이지만 위에서 언급한 내용이 핵심입니다.
설명:
var와dynamic은 비슷한 기능을 가진 것 같지만 다릅니다.
√ | 메소드 매개변수 유형 | |
√ | 메소드 반환 값 유형 | |
위 내용은 C#의 익명 개체, var 및 동적 유형 동적에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











무선 네트워크 설정은 일반적이지만 네트워크 유형을 선택하거나 변경하는 것은 특히 결과를 모르는 경우 혼란스러울 수 있습니다. Windows 11에서 네트워크 유형을 공개에서 비공개로 또는 그 반대로 변경하는 방법에 대한 조언을 찾고 있다면 몇 가지 유용한 정보를 읽어보세요. Windows 11의 다양한 네트워크 프로필은 무엇입니까? Windows 11에는 기본적으로 다양한 네트워크 연결을 구성하는 데 사용할 수 있는 설정 집합인 다양한 네트워크 프로필이 함께 제공됩니다. 이는 집이나 사무실에 여러 개의 연결이 있는 경우 유용하므로 새 네트워크에 연결할 때마다 이를 모두 설정할 필요가 없습니다. 개인 및 공용 네트워크 프로필은 Windows 11에서 두 가지 일반적인 유형이지만 일반적으로

1부 Python 시퀀스 유형의 특성에 대해 이야기해 보겠습니다. 이 블로그에서는 Python의 다양한 "시퀀스" 클래스와 일반적으로 사용되는 세 가지 내장 데이터 구조인 목록, 튜플 및 문자에 대해 이야기하겠습니다. ). 눈치채셨는지 모르겠지만 이러한 클래스는 여러 데이터 요소를 저장하는 데 사용할 수 있다는 분명한 공통점을 가지고 있습니다. 가장 중요한 기능은 각 클래스가 시퀀스 요소에 대한 아래 첨자(색인) 액세스를 지원한다는 것입니다. 예를 들어 SyntaxSeq[i]를 사용하는 것입니다. 실제로 위의 각 클래스는 배열과 같은 간단한 데이터 구조로 표현됩니다. 그러나 Python에 익숙한 독자라면 이 세 가지 데이터 구조에 몇 가지 차이점이 있다는 것을 알 수 있습니다. 예를 들어 튜플과 문자열은 수정할 수 없지만 목록은 수정할 수 있습니다.

오늘날 인공지능(AI) 기술 개발은 본격화되고 있으며, 다양한 분야에서 큰 잠재력과 영향력을 보여주고 있습니다. 오늘 Dayao는 여러분에게 몇 가지 참고 자료를 제공하고자 4개의 .NET 오픈 소스 AI 모델 LLM 관련 프로젝트 프레임워크를 공유할 것입니다. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel은 OpenAI, Azure와 같은 대규모 언어 모델(LLM)을 통합하도록 설계된 오픈 소스 소프트웨어 개발 키트(SDK)입니다.

짧은 비디오 플랫폼의 인기로 인해 비디오 매트릭스 계정 마케팅이 새로운 마케팅 방법으로 자리 잡았습니다. 다양한 플랫폼에서 여러 계정을 생성하고 관리함으로써 기업과 개인은 브랜드 홍보, 팬 성장, 제품 판매와 같은 목표를 달성할 수 있습니다. 이 기사에서는 비디오 매트릭스 계정을 효과적으로 사용하는 방법에 대해 설명하고 다양한 유형의 비디오 매트릭스 계정을 소개합니다. 1. 비디오 매트릭스 계정을 만드는 방법은 무엇입니까? 좋은 비디오 매트릭스 계정을 만들려면 다음 단계를 따라야 합니다. 먼저 브랜드 커뮤니케이션, 팬 성장 또는 제품 판매 등 비디오 매트릭스 계정의 목표가 무엇인지 명확히 해야 합니다. 명확한 목표를 갖는 것은 그에 따른 전략을 개발하는 데 도움이 됩니다. 2. 플랫폼 선택: 타겟 청중에 따라 적절한 짧은 비디오 플랫폼을 선택하십시오. 현재 주류 단편 비디오 플랫폼으로는 Douyin, Kuaishou, Huoshan Video 등이 있습니다.

Go 함수는 다양한 유형의 여러 값을 반환할 수 있습니다. 반환 값 유형은 함수 시그니처에 지정되며 return 문을 통해 반환됩니다. 예를 들어, 함수는 정수와 문자열을 반환할 수 있습니다: funcgetDetails()(int,string). 실제로 원의 면적을 계산하는 함수는 면적과 선택적 오류 funccircleArea(radiusfloat64)(float64,error)를 반환할 수 있습니다. 참고: 함수 서명이 유형을 지정하지 않으면 null 값이 반환됩니다. 가독성을 높이기 위해 명시적인 유형 선언과 함께 return 문을 사용하는 것이 좋습니다.

잠시 동안 동적 언어를 사용하는 것이 좋으며 화장터에서 코드가 재구성됩니다. 이 문장을 들어보셨을 거라 생각합니다. 단위 테스트와 마찬가지로 코드를 작성하는 데 시간이 조금 걸리지만 장기적으로는 매우 가치가 있습니다. 이 기사에서는 Python의 유형 힌트를 더 잘 이해하고 사용하는 방법을 공유합니다. 1. 유형 힌트는 구문 수준에서만 유효합니다. 유형 힌트(PEP3107부터 도입됨)는 변수, 매개변수, 함수 매개변수 및 해당 반환 값, 클래스 속성 및 메서드에 유형을 추가하는 데 사용됩니다. Python의 변수 유형은 동적이며 코드에 유형 힌트를 추가하기 위해 런타임에 수정될 수 있습니다. 이는 구문 수준에서만 지원되며 코드 실행에 영향을 주지 않습니다. Python 인터프리터는 코드를 실행할 때 유형 힌트를 무시합니다. 따라서 유형

C++ 함수에는 단순 함수, const 함수, 정적 함수 및 가상 함수 유형이 있습니다. 기능에는 인라인 함수, 기본 매개변수, 참조 반환 및 오버로드된 함수가 포함됩니다. 예를 들어,calculateArea 함수는 π를 사용하여 주어진 반경의 원의 면적을 계산하고 이를 출력으로 반환합니다.
