2011-07-12 27 views
6

Tôi đã thực hành một số mã hóa và nhận thấy rằng tôi đã có thể sử dụng lớp thay vì Module trong VB .NET. Vì vậy, tôi thay thế mô-đun của tôi đến lớp và tôi đã nhận được thông báo lỗi này:Làm thế nào để xác định một phương pháp chính trong một lớp so với một mô-đun?

Không có phương pháp tiếp cận 'Main' với một chữ ký phù hợp đã được tìm thấy trong 'practicevb'.practicevb

Tôi chắc chắn rằng khởi động đối tượng đã được đặt chính xác trong Properties > Application > Startup Objects.

Thông báo lỗi biến mất nếu tôi đổi lại thành Mô-đun nhưng tôi muốn giữ lớp này vì các phần khác của mã tôi đã đổi thành lớp và không trả lại và thông báo lỗi.

Class Atic 

    Sub Main() 
     Console.WriteLine("Hello, this proram will calcaulate the quadratic forumla ax^2 + bx + c") 
     Dim Quads As New Quads 
     Quads.Calc() 

     Console.ReadKey() 

    End Sub 

End Class 
+0

Cảm ơn bạn đã cảm ơn vì tất cả thông tin. Những gì NoAlias ​​đề xuất hoạt động. Tôi nghĩ tôi sẽ giữ nó như Module vì nó nghe như một ý tưởng hay. – nhat

Trả lời

12

Tôi đoán là ứng dụng của bạn là một ứng dụng dòng lệnh . Đặt lớp học thành Công khai và được chia sẻ ...

Public Shared Sub Main() 

End Sub 
0

Modules chỉ là các lớp mà tất cả các thành viên được chia sẻ (tĩnh trong C#).

Nếu bạn muốn thay đổi một module vào một lớp học, chỉ cần thêm modifier Shared cho các thành viên của nó:

Shared Sub Main() ... 

Mặc dù, tôi thực sự nghĩ rằng modules are a good idea và một nơi hoàn hảo để đưa chức năng Main của bạn.

+0

tôi nghĩ anh ấy bị nhầm lẫn với OOP hardcore trong C#!:-) – Sudantha

+0

tôi nghĩ rằng anh ấy mới lập trình trong 'OOP' vì vậy tôi chỉ cần tự hỏi những thứ như' (tĩnh trong C#). 'Sẽ nhầm lẫn anh ta :-) – Sudantha

2

Nếu bạn là MỚI đến lớp

Lớp học là một khái niệm khác so với một mô-đun module là một tập hợp các chức năng, nhưng class là một mẫu cần được instantiating một đối tượng và sử dụng.

Đầu tiên đi mặc dù những điều cơ bản OOP trong VB.NET here

Nếu bạn là một Pro

Sử dụng Shared Sub Main() ...

0

Phương pháp chính được yêu cầu làm điểm vào của ứng dụng của bạn. Tôi cần phải được gọi mà không cần instantiating một đối tượng như không có cách nào để làm điều này trước khi chương trình của bạn bắt đầu.

Hoặc chỉ cần thực hiện phương pháp này và lớp tĩnh như đã nói, hoặc tốt hơn có một mô-đun chỉ cho điểm vào này, sau đó khởi tạo một đối tượng và đi từ đó.

0

Đối với bất kỳ trình đọc nào trong tương lai, nếu Main() của bạn nằm trong Mô-đun (không phải Mô-đun lớp) và bạn vẫn gặp phải lỗi này, hãy đảm bảo phương pháp không nhận bất kỳ thông số nào. Không giống như C++, VB.NET không nhận các đối số dòng lệnh như các tham số của phương thức Main. Thay vào đó, bạn nên định nghĩa phương thức Main() không tham số và sử dụng để truy cập các tham số được cung cấp. Tôi đập đầu một lúc trước khi tôi nhận ra điều này.

Các vấn đề liên quan