Nhìn sơ qua thì thấy cậu code vậy thì không có lỗi, chỉ thiếu là trong contructor mặc định của Point nên/phải (??) gán trị default cho member variables, mặc dù có lẽ là trị default là 0 và được C# khởi tạo (dùng FxCop check thử xem sao).
Có lẽ bug ở vòng loop của cậu, cậu add vào ArrayList chỉ 1 object chứ không phải nhiều object, nên kết quả in ra giống nhau, chỉ của 1 object.
Post code lên cho bà con bug hunting luôn đi !!!