W3bbo said:
Foo* would be a pointer to a Foo Wink

Anyway, I'm not sure if I totally understand what you're aiming for. 'foreach' is the syntactical sugar around IEnumerable since it manages the whole while(collection.GetEnumerator().MoveNext()) thing for you.
Thanks for the reply, W3bbo. To better explain myself, suppose that you want to define a property which is a collection of "Foo" objects, but you don't want to allow adding or removing items via the property (i.e. the collection is managed internally). In such a case, it would be appropriate for the type of the property to be IEnumerable<Foo>. But that's hard to read. So instead of this:

public class SomeClass
{
    ...
    public IEnumerable<Foo> Foos
    {
        get { ... }
    }
}

I would rather see this:

public class SomeClass
{
    ...
    public Foo* Foos
    {
        get { ... }
    }
}

Of course, as you pointed out, Foo* is currently interpreted as pointer-to-Foo (at least in an unsafe context), which almost certainly precludes using that particular syntax. My overall point is that it would be nice to have some simplified syntax for representing IEnumerable<Foo> (perhaps Foo+).

I do lament the fact that "*" is already taken. The "*" character is used in many programming contexts to represent "0 to n" number of "things".