Q:

C# how swap object to object of inherite class with only their reference - It is posible?

EDIT: In considerations i didn't have access to list
EDIT: I changed example to more advanced
EDIT: Fixed example ;P
EDIT: Again edited
I'm sure that i got vote down cause you guys didn't understand orgin of my considerations. I know it is posible with pointers in C++ but not sure it is still posible in C#. And i didnt ask cuase i don't know how to change element in List! I just want to make it without access to that LIST! This is only example cuase real live example is to complicated to introduce here...
I Wonder if it's posible to do something like this
        class Foo
        {
            public int foo = 100;
            EventHandler something;
        public Foo()
        {
            something += smth;
        }

        public void doSmth()
        {
            something(this, EventArgs.Empty);
        }

        public static void smth(object sender, EventArgs e)
        {
            sender = new Foo();
        }
    }

    class Boo : Foo
    {
        EventHandler<EventArgs> something;

        public Boo()
        {
            foo = 1;
            something += smth;
        }           

    }
    static void Main(string[] args)
    {
        List<Foo> list = new List<Foo>();

        Foo foo = new Boo();
        list.Add(foo);

        foreach (Foo f in list)
            f.doSmth();

        foreach (Foo f in list)
            Console.WriteLine(f.foo);

        Console.ReadKey();
    }

My output is 1 but i want to get 100. It is posible to change object from list by its reference ?

A:

Yes, but you didn't get the reference you thought:
Foo boo = list[0];
boo = new Boo;      

This makes a new reference (called boo) and assigns the reference in list[0] to it. You then assign a Boo object to that new, local reference. When you iterate over the List, the reference stored there hasn't been changed at all, so you see the behavior.
Instead, just write:
list[0] = new Boo();

Note I actually wasn't sure that would work, so I tested it, and it does! Because the code is kind of odd, I would reccommend finding a different way to mutate it (like removing the old object and adding a new one) in order to improve readability/maintainability.
        List<FancyText> test = new List<FancyText>();
        test.Add(new FancyText { Text = "test" });
        test[0] = new FancyText() { Text = "final" };

The collection holds the object with "final" in it.
Update To your edit, you can almost do that:
private delegate void refHandler (ref Award sender);
private event refHandler test;

However, you can't pass this as a ref parameter, as it is read-only (makes sense, right? you can't assign yourself to something else, that would be weird).

