Not directly but you can try with LINQ :
foreach( var both in listA.Zip(listB, (a,b)=> new { a, b}))
{
both.a.Print();
both.b.Print();
}
Sample code:
void Main()
{
List<A> listA = new List<A>(){ new A("aaa1"), new A("aaa2")};
List<B> listB = new List<B>(){ new B("bbb1"), new B("bbb3")};
foreach( var both in listA.Zip(listB, (a,b)=> new { a, b}))
{
both.a.Print();
both.b.Print();
}
}
public class A
{
public string Val{ get; set;}
public A( string a)
{
Val =a;
}
public void Print()
{
Console.WriteLine( "Class A:"+Val);
}
}
public class B
{
public string Val{ get; set;}
public B( string b)
{
Val =b;
}
public void Print()
{
Console.WriteLine( "Class B:"+Val);
}
}