Collections Visual C++ .NET

#include "stdafx.h"
using namespace System;
using namespace System::Collections::Generic;
ref class MyClass{
public:
    String^ Value;
    MyClass(String^ in);
    virtual String^ ToString() override;
    static bool hasX(MyClass^ val);
    static void formatString(MyClass^ val);
};
MyClass::MyClass(String^ in) : Value(in) {}
String^ MyClass::ToString() { return Value; }
bool MyClass::hasX(MyClass^ val)
{
    return val->Value->ToUpper()->IndexOf("X") > 0;
}
void MyClass::formatString(MyClass^ val)
{
    val->Value = String::Format("** {0} **", val->Value);
}
void main(){
    List^ alist = gcnew List();
    alist->Add(gcnew MyClass("One"));
    alist->Add(gcnew MyClass("-"));
    alist[1] = gcnew MyClass("Three");
    alist->Insert(1, gcnew MyClass("Two"));
    List^ morenums = gcnew List();
    morenums->Add(gcnew MyClass("Four"));
    morenums->Add(gcnew MyClass("Five"));
 
    alist->AddRange(morenums);
}