Visual Studio 2012의 Visual Basic 주요 변경 내용
이 문서의 내용
다음 표에서 만든 응용 프로그램이 있는 변경 Visual Basic 2010 에 컴파일하지 Visual Studio 2012의 Visual Basic 및 응용 프로그램의 런타임 동작이 변경 될 수 있습니다.
형식 유추
배열 리터럴 피연산자는 반환 문에서 런타임 배열 형식 함수 시그니처 대신 리터럴 배열에서 유추 되 고 결정 됩니다.
이 변경 장소 위치를 이전에 다음 예제와 같이 없습니다 리터럴 배열을 반환할 수 있습니다.
Function GetArrayLiteral(ByVal number As Integer ) As Integer ()
If number < 0 Then
' In Visual Studio 2010, this array literal is
' is inferred to be an array of objects, which
' cannot be converted to an array of integers.
' In the current version, this array literal is
' inferred to be an array of integers, which is
' the return type of the function.
Return {}
Else
Return {number}
End If
End Function
배열 리터럴은에 원래 보다 더 넓은 되 고 런타임 형식의이 변경이 발생할 수 있습니다. Visual Basic 2010다음 예제와 같이:
Private Sub ArrayLiterals()
Dim theArray = GetArray()
Console.WriteLine(theArray.GetType().FullName)
End Sub
Private Function GetArray() As Object ()
Return {"chromatic" , "infinitesimal" }
End Function
' Output in the current version:
' System.Object[]
' Output in Visual Studio 2010:
' System.String[]
람다 식
에 For Each 식, 이제는 람다 식에 컨트롤 변수를 사용할 수 있습니다.
사용 된 For Each 람다 식에 반복 변수를 더 이상 컴파일 타임 경고를 발생 하 고 더 이상이 예기치 않은 결과 다음 예제와 같이:
Dim methods As New List(Of Action)
For Each word In {"hello" , "world" }
methods.Add(Sub() Console.Write(word & " " ))
Next
methods(0)()
methods(1)()
' Output in the current version:
' hello world
' Output in Visual Studio 2010:
' world world
LINQ 식
에 있는 For Each 식, 이제는 LINQ 식에 컨트롤 변수를 사용할 수 있습니다.
사용 된 For Each LINQ 식에 반복 변수 인해 컴파일 타임 경고 메시지가 더 이상 및 더 이상이 예기치 않은 결과 다음 예제와 같이:
Dim lines As New List(Of IEnumerable(Of String ))
For Each number In {1, 2, 3}
Dim line = From letter In {"a" , "b" , "c" }
Select number.ToString & letter
lines.Add(line)
Next
For Each line In lines
For Each entry In line
Console.Write(entry & " " )
Next
Console.WriteLine()
Next
' Output in the current version:
' 1a 1b 1c
' 2a 2b 2c
' 3a 3b 3c
' Output in Visual Studio 2010:
' 3a 3b 3c
' 3a 3b 3c
' 3a 3b 3c
오버 로드 확인
제네릭 형식 매개 변수가 있는 두 개의 오버 로드가 호출자가 똑같이 일치 하지만 오버 로드 보다 구체적인 경우 특정 오버 로드가 사용 됩니다.
이 조건은 오버 로드 확인 컴파일 타임 오류 Visual Studio 2010에서 발생할.다음 예제에서는 Process(theList) 선 Visual Studio 2010에서 사용 하면 컴파일 타임 오류가 발생 합니다.현재 버전에 선 특정 오버 로드를 일치 하는 Process 메서드입니다.
Private Sub Test()
Dim theList As New List(Of Integer)
Process(theList)
Dim theQueue As New Queue(Of Integer)
Process(theQueue)
End Sub
Private Sub Process(Of T)(ByVal theList As List(Of T))
Debug.WriteLine("first overload")
End Sub
Private Sub Process(Of T)(ByVal x As T)
Debug.WriteLine("second overload")
End Sub
' Output:
' first overload
' second overload
참고 항목
참조
For Each...Next 문(Visual Basic)
개념
람다 식(Visual Basic)
Visual Studio 2012 Visual Basic의 새로운 기능
기타 리소스
Visual Basic의 배열
Visual Basic의 LINQ
Visual Basic 시작
주요 언어 수정 주요 변경 되 면?