첫째, 이미 프레임워크에 있는 일반 List
클래스의 메서드가 List
를 반복하는 것으로 알고 있습니다.
하지만 예를 들어, List<>
의 각 개체를 반복하고 각 개체에 대해 Console.WriteLine(object.ToString())
을 수행하는 ForEach 메서드를 작성하는 올바른 구문은 무엇일까요?
첫 번째 인수로 List<>
를, 두 번째 인수로 람다 표현식을 취하는 것입니다.
제가 본 대부분의 예제는 확장 메서드로 수행되거나 LINQ를 포함합니다. 저는 평범한 메서드 예제를 찾고 있습니다.
이게 you& # 39, re 묻는?
int[] numbers = { 1, 2, 3 };
numbers.ToList().ForEach(n => Console.WriteLine(n));
로렌아줌마가 넣을 수 밖에 없는 큰 걱정이 누군가 때문에 단순한 방법을 통해 답을 확장명으로 확장명으로 방법은 준활성 방법은 인스턴스를 호출하십시오 메서드입니다. 운영까지도 사용하지 않고 있다는 사실을 알고 답을 확장명으로 메서드입니다. 즉, 정적, 또는 구내번호 인스턴스입니다 경우 관계 없이 같은 방법을 다음과 같이 정의된다.
아래 코드는 정의할 수 있는 코드를 사용하여 인스턴스를 만드는 방법 및 장치 테스트 방법 및 수락됨 오토메이티드 확장명으로 표시하십시오 출력입니다 동일합니다.
public static class Extensions
{
public static void Each<T>(this IEnumerable<T> items, Action<T> action)
{
foreach (var item in items)
{
action(item);
}
}
}
[TestFixture]
public class ForEachTests
{
public void Each<T>(IEnumerable<T> items, Action<T> action)
{
foreach (var item in items)
{
action(item);
}
}
private string _extensionOutput;
private void SaveExtensionOutput(string value)
{
_extensionOutput += value;
}
private string _instanceOutput;
private void SaveInstanceOutput(string value)
{
_instanceOutput += value;
}
[Test]
public void Test1()
{
string[] teams = new string[] {"cowboys", "falcons", "browns", "chargers", "rams", "seahawks", "lions", "heat", "blackhawks", "penguins", "pirates"};
Each(teams, SaveInstanceOutput);
teams.Each(SaveExtensionOutput);
Assert.AreEqual(_extensionOutput, _instanceOutput);
}
}
그 말 그대로 정말 해야 할 수 있는 유일한 방법은 '정적 인스턴스로 변환하는 방법을 확장명으로 분리하십시오' 의 첫 번째 매개변수입니다 수정자이며 메서드입니다.
이 방법은
public static void Each<T>(this IEnumerable<T> items, Action<T> action)
{
foreach (var item in items)
{
action(item);
}
}
됩니다
public void Each<T>(Action<T> action)
{
foreach (var item in items)
{
action(item);
}
}
목록의 각 문자열을 순회할 수 있으며 단일 문을 사용하여 전체 제네릭을 검색할 수도 있으므로 검색이 더 쉬워집니다.
public static void main(string[] args)
{
List names = new List();
names.Add(“Saurabh”);
names.Add("Garima");
names.Add(“Vivek”);
names.Add(“Sandeep”);
string stringResult = names.Find( name => name.Equals(“Garima”));
}