.net 프레임워크에 도입된 var 대상 유형 설명

2244 단어
vs 2008을 설치한 후 백엔드 코드에서 resharper 플러그인은 백엔드의 모든 부분 변수에 대해 힌트를 주고 "use implicitly typed local variable declaration"을 사용해야 한다고 표시하며 코드 수정 제안을 통해 "use Var"의 힌트가 있음을 알 수 있습니다. 글자의 의미를 통해 바로 알 수 있습니다.net framework3.5에 도입된 새로운 메커니즘, 즉 국부 변수에 대해 자동 유형 설정을 하는데 그 유형은 등호 오른쪽에서 초기화된 대상의 유형에 달려 있다.인터넷에서 관련 설명을 찾아보았는데 여기에 기록되어 있다.
1. 신기한 var은 C#3.0에 변수 성명 var을 추가했습니다. 이 성명은 JavaScript의 var과 유사하지만 다릅니다.
1. 공통점, 그는 var로 모든 유형의 국부 변수를 설명할 수 있다.
2. 다른 점은 컴파일러에게만 이 변수는 초기화 표현식에 따라 변수의 유형을 추정해야 하고 국부 변수일 뿐이라는 것을 알려준다.
2. 공통점은 그가 성명할 수 있다.
 
  
var integer = 10;
var name = "edisundong";
var numbers = new int[] { 1, 2, 3 };

3. 서로 다른 점 var은 단지 키워드일 뿐이다. 그는 C#3.0의 새로운 유형이 아니라 컴파일러에게 이 변수는 초기화 표현식에 따라 변수의 유형을 추정해야 한다고 알려준다. 위의 문장은 다음과 같다.
 
  
int integer = 10;
string name = " edisundong ";
int[] numbers = new int[] { 1, 2, 3 };

4. 주의점
1. 성명할 때 반드시 동시에 값을 부여해야 한다. 성명은 값 부여 번호 오른쪽의 표현식에 의존하기 때문이다. 만약에 아래의 문장이 있다면.
 
  
var integer;
integer = 10;

컴파일할 때 Implicitly typed locals must be initialized 오류가 보고됩니다.
2. var을 사용하여 국부 변수를 성명한 후에도 그는 강한 유형을 가지고 있으며 다음과 같은 테스트를 할 수 있다.
 
  
var integer = 10;
integer = " edisundong ";

컴파일할 때 Cannot implicitly convert type string to int 오류를 보고합니다.
3. 초기화기 표현식의 컴파일러 형식은 빈 (null) 형식이 될 수 없습니다. 컴파일러는null에 따라 국부 변수의 유형을 추정할 수 없습니다. 아래의 문장이 있으면 다음과 같습니다.
 
  
var integer = null;

컴파일할 때 Cannot assign to an implicitly typed local 오류가 보고됩니다.
4. 초기화 문장은 표현식이어야 한다. 초기화 표현식은 그 자신을 포함할 수 없지만 대상이나 집합 초기화기를 포함하는 new 표현식(즉 익명 형식)이 될 수 있다.만약 이렇게 성명할 수 있다면:
 
  
var coll = new Hashtable();

5. var의 성명은 국부 변수에만 한정되며foreach,for,using 문장에도 포함될 수 있습니다.다음 사용이 잘못되었습니다.
 
  
class Program
{
 private var i = 10; // 。
 static void Main(string[] args)
 { }
}

컴파일할 때 The contextual keyword var may only appear within a local variable declaration 오류를 보고합니다.

좋은 웹페이지 즐겨찾기