tôi gặp khó khăn khi tìm hiểu các lỗi cơ bản với mã dưới đây:Điểm của một phương thức tĩnh trong một lớp không tĩnh là gì?
class myClass
{
public void print(string mess)
{
Console.WriteLine(mess);
}
}
class myOtherClass
{
public static void print(string mess)
{
Console.WriteLine(mess);
}
}
public static class Test
{
public static void Main()
{
myClass mc = new myClass();
mc.print("hello");
myOtherClass moc = new myOtherClass();
moc.print("vhhhat?");
//This says I can't access static method in non static context, but am I not?
}
}
tôi có thể không bao giờ nghĩ ra một lý do tại sao người ta sẽ khai báo một phương pháp tĩnh trong một lớp học không tĩnh, vậy tại sao sẽ NET không ném một lỗi ngoại lệ.
Hơn nữa,
moc.print("vhhhat?");
này sẽ nói rằng tôi không thể truy cập phương pháp tĩnh trong bối cảnh tĩnh không nhưng thử nghiệm và chính được tĩnh, những gì là nó đề cập đến?
Xem 'XmlReader.Create' cho một ví dụ về một phương thức tĩnh trong một lớp không tĩnh. –
Vấn đề là các tên đều xấu. Một "phương pháp tĩnh" thực sự nên được gọi là một cái gì đó giống như một "phương pháp chia sẻ", vì nó là trong VB. Một lớp là một kế hoạch chi tiết cho việc xây dựng các đối tượng, nhưng các lớp tĩnh không thể xây dựng được, do đó chúng không được gọi là các lớp. Một lần nữa, VB làm cho nó đúng, và gọi chúng là "mô-đun". Khi tên có tính mô tả thì việc trả lời câu hỏi trở nên dễ dàng hơn. Câu hỏi của bạn là: Tại sao bạn sẽ có một "phương thức chia sẻ" trong một lớp học, không phải trong một mô-đun? Trả lời: Để chia sẻ nó giữa các trường hợp của lớp của nó. –