언어
Visual Studio 루프와 LINQ 식 간에 변환하기 위한 몇 가지 리팩터링을 제공합니다. 빠른 작업 및 리팩터링 메뉴(Ctrl+.)를 통해 이러한 리팩터링에 액세스할 수 있습니다.
for 루프를 foreach 문으로 변환
이 리팩터링에서는 for 루프를 foreach 문으로 변환합니다. 루프 변수를 인덱스로 필요로 하지 않고 코드를 간소화하려는 경우에 유용합니다.
메모
foreach 빠른 작업 리팩터링으로 변환은 이니셜라이저, 조건 및 반복기의 세 부분을 모두 포함하는 루프에만 사용할 수 있습니다.
키워드에
for캐리트를 배치합니다.Ctrl 키를+누르거나 코드 파일 여백에서
을 클릭합니다.
'foreach'로 변환을 선택합니다. 또는 변경 내용 미리 보기를 선택하여 변경 내용 미리 보기 대화 상자를 연 다음 적용을 선택합니다.
foreach 문을 for 루프로 변환
이 리팩터링에서는 foreach 문을 for 루프로 변환합니다. 항목에 액세스하는 것 이상의 용도로 루프 변수를 사용해야 하거나 다차원 배열을 반복할 때 유용합니다.
또는
For Each키워드에foreach캐리트를 배치합니다.Ctrl 키를+누르거나 코드 파일 여백에서
을 클릭합니다.
'for'로 변환을 선택합니다. 또는 변경 내용 미리 보기를 선택하여 변경 내용 미리 보기 대화 상자를 연 다음 적용을 선택합니다.
리팩터링에 새 반복 개수 변수가 도입되므로 편집기의 오른쪽 위 모서리에 이름 바꾸기 상자가 나타납니다. 변수의 다른 이름을 선택하려면 변수를 입력한 다음 Enter 키를 누르거나 이름 바꾸기 상자에서 적용을 선택합니다. 새 이름을 선택하지 않으려면 Esc 키를 누르거나 적용 을 선택하여 이름 바꾸기 상자를 해제합니다.
메모
C#의 경우 이러한 리팩터링에서 생성된 코드는 컬렉션에 있는 항목의 형식에 대해 명시적 형식 또는 var 을 사용합니다. 생성된 코드의 형식(명시적 또는 암시적)은 범위에 있는 코드 스타일 설정에 따라 달라집니다. 이러한 특정 코드 스타일 설정은 도구>옵션>텍스트 편집기>C#>Code Style>General'var>기본 설정의 컴퓨터 수준 또는 EditorConfig 파일의 솔루션 수준에서 구성됩니다. 옵션에서 코드 스타일 설정을 변경하는 경우 변경 내용을 적용하려면 코드 파일을 다시 엽니다.
foreach 루프를 LINQ로 변환
적용 대상: C#
이 리팩터링에서는 IEnumerable을 사용하는 foreach 루프를 LINQ 쿼리 또는 LINQ 호출 양식(LINQ 메서드라고도 함)으로 변환합니다.
메모
LINQ 구문은 일반적으로 foreach 루프보다 효율성이 떨어집니다. LINQ를 사용하여 코드의 가독성을 향상시킬 때 발생할 수 있는 성능 장단점에 유의하는 것이 좋습니다.
키워드에 커서를 놓습니다
foreach.
Ctrl 키를 누릅니다+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.
LINQ로 변환 또는 Linq로 변환(호출 양식)을 선택합니다.
예제 코드
using System.Collections.Generic;
public class Class1
{
public void MyMethod()
{
var greetings = new List<string>()
{ "hi", "yo", "hello", "howdy" };
IEnumerable<string> enumerable()
{
foreach (var greet in greetings)
{
if (greet.Length < 3)
{
yield return greet;
}
}
yield break;
}
}
}
LINQ를 foreach 문으로 변환
이 리팩터링에서는 LINQ 쿼리 구문을foreach 문으로 변환합니다.
로 시작하는 전체 LINQ 쿼리를
from선택합니다.메모
이 리팩터링에서는 메서드 구문이 아닌 쿼리 구문으로 표현된 LINQ 쿼리를 변환하는 데만 사용할 수 있습니다.
Ctrl 키를+누르거나 코드 파일 여백에서
을 클릭합니다.
'foreach'로 변환을 선택합니다. 또는 변경 내용 미리 보기를 선택하여 변경 내용 미리 보기 대화 상자를 연 다음 적용을 선택합니다.
메모
C#의 경우 이러한 리팩터링에서 생성된 코드는 루프의 반복 변수에 명시적 형식 또는 var 을 foreach 사용합니다. 생성된 코드의 형식(명시적 또는 암시적)은 범위에 있는 코드 스타일 설정에 따라 달라집니다. 이러한 특정 코드 스타일 설정은 도구>옵션>텍스트 편집기>C#>Code Style>General'var>기본 설정의 컴퓨터 수준 또는 EditorConfig 파일의 솔루션 수준에서 구성됩니다.
옵션에서 코드 스타일 설정을 변경하는 경우 변경 내용을 적용하려면 코드 파일을 다시 엽니다.
LINQ 식 간소화
적용 대상: C#
이 리팩터링은 다음 열거 가능한 메서드SingleOrDefault(), , Last(), Any()First()LastOrDefault()Count(), 및 FirstOrDefault()에 대한 Enumerable.Single() 인스턴스 SomeEnumerableType.Where(<LambdaExpression>).Single()SomeEnumerable.Single(<LambdaExpression>) 를 간소화합니다.
메서드에 대한 열거 가능 항목에 대한 불필요한 호출을 .Where() 제거하면 가독성과 경우에 따라 성능이 향상됩니다.
커서를 Visual Studio
SomeEnumerableType.Where(<LambdaExpression>).Single()인스턴스 내에 배치합니다.Ctrl 키를 누릅니다+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.
LINQ 식 단순화를 선택합니다.