C #에서 "var"는 무엇을 의미합니까?
중복 가능성 :
C #에서 var 키워드 사용
C #에서 키워드는 어떻게 var
작동합니까?
이는 선언되는 로컬 유형이 컴파일러에 의해 유추된다는 것을 의미합니다.
// This statement:
var foo = "bar";
// Is equivalent to this statement:
string foo = "bar";
특히 var
변수를 동적 유형으로 정의하지 않습니다. 따라서 이것은 합법적이지 않습니다.
var foo = "bar";
foo = 1; // Compiler error, the foo variable holds strings, not ints
var
두 가지 용도로만 사용됩니다.
- 특히 변수를 중첩 된 제네릭 유형으로 선언 할 때 변수를 선언하는 데 더 적은 입력이 필요합니다.
- 형식 이름을 미리 알 수 없기 때문에 익명 형식의 개체에 대한 참조를 저장할 때 사용해야합니다.
var foo = new { Bar = "bar" };
var
지역 주민 이외의 유형으로 사용할 수 없습니다 . 따라서 키워드 var
를 사용하여 필드 / 속성 / 매개 변수 / 반환 유형을 선언 할 수 없습니다 .
이는 데이터 유형이 컨텍스트에서 파생 (묵시적)됨을 의미합니다.
에서 http://msdn.microsoft.com/en-us/library/bb383973.aspx
Visual C # 3.0부터 메서드 범위에서 선언 된 변수는 암시 적 형식 var를 가질 수 있습니다. 암시 적으로 형식이 지정된 지역 변수는 형식을 직접 선언 한 것처럼 강력하게 형식 지정되지만 컴파일러가 형식을 결정합니다. i의 다음 두 선언은 기능적으로 동일합니다.
var i = 10; // implicitly typed
int i = 10; //explicitly typed
var
키보드 입력 및 시각적 소음을 제거하는 데 유용합니다.
MyReallyReallyLongClassName x = new MyReallyReallyLongClassName();
된다
var x = new MyReallyReallyLongClassName();
그러나 가독성이 희생되는 지점까지 남용 될 수 있습니다.
"var"는 컴파일러가 사용량에 따라 변수의 명시 적 유형을 결정 함을 의미합니다. 예를 들면
var myVar = new Connection();
연결 유형의 변수를 제공합니다.
초기화에서 할당 된 내용을 기반으로 유형을 선언합니다.
간단한 예는 다음과 같습니다.
var i = 53;
53의 유형을 검사하고 기본적으로 다음과 같이 다시 작성합니다.
int i = 53;
Note that while we can have:
long i = 53;
This won't happen with var. Though it can with:
var i = 53l; // i is now a long
Similarly:
var i = null; // not allowed as type can't be inferred.
var j = (string) null; // allowed as the expression (string) null has both type and value.
This can be a minor convenience with complicated types. It is more important with anonymous types:
var i = from x in SomeSource where x.Name.Length > 3 select new {x.ID, x.Name};
foreach(var j in i)
Console.WriteLine(j.ID.ToString() + ":" + j.Name);
Here there is no other way of defining i
and j
than using var
as there is no name for the types that they hold.
Did you ever hated to write such variable initializers?
XmlSerializer xmlSerializer = new XmlSerialzer(typeof(int))
So, starting with C# 3.0, you can replace it with
var xmlSerializer = new XmlSerialzer(typeof(int))
One notice: Type is resolved during compilation, so no problems with performance. But Compiler should be able to detect type during build step, so code like var xmlSerializer;
won't compile at all.
참고URL : https://stackoverflow.com/questions/4307467/what-does-var-mean-in-c
'code' 카테고리의 다른 글
stringstream은 정확히 무엇을합니까? (0) | 2020.09.07 |
---|---|
목록의 버튼으로 Listactivity에서 onListItemClick을 실행하는 방법은 무엇입니까? (0) | 2020.09.07 |
jQuery xml error 'No'Access-Control-Allow-Origin 'header is present on the request resource.' (0) | 2020.09.07 |
ggplot2에서 색상을 채우기 위해 텍스처를 추가하는 방법 (0) | 2020.09.07 |
Firefox에서 도메인 간 웹 보안 비활성화 (0) | 2020.09.06 |