2013-01-14 51 views
6

Có cách nào để yêu cầu trình biên dịch sử dụng loại tĩnh thay vì biến khi dự án của bạn không sử dụng không gian tên không?Sử dụng loại tĩnh thay vì biến

Ví dụ, tôi có một lớp được gọi là Người dùng với các phương pháp tĩnh và không tĩnh khác nhau. Giả sử một trong các phương thức tĩnh được gọi là GetUser().

Tôi đang cố gắng gọi phương thức User.GetUser() từ phương thức cũng có biến trong phạm vi (được thừa kế từ lớp cơ sở) được gọi là Người dùng. Tuy nhiên, trình biên dịch phàn nàn nói rằng nó không thể tìm thấy User.GetUser() bởi vì nó nghĩ rằng tôi đang đề cập đến biến người dùng đó là trong phạm vi.

Nếu dự án này sử dụng không gian tên, tôi chỉ có thể thực hiện ns1.User.GetUser(), nhưng điều đó không khả thi trong trường hợp này. Có cách nào tôi có thể nói với trình biên dịch rằng tôi đang đề cập đến loại User thay vì biến số User?

+1

... Bạn có thể đổi tên biến của mình không? Tôi thường khuyên bạn không nên sử dụng tên biến được viết hoa. Đây là lý do tại sao. – FrankieTheKneeMan

Trả lời

9

Bạn có thể sử dụng:

global::User.GetUser() 

Hoặc một chỉ thị sử dụng để bí danh kiểu:

using UserType = User; 

... 

UserType.GetUser(); 

Tôi rất muốn khuyến khích bạn sử dụng không gian tên mặc dù :)

+0

Rực rỡ! Cảm ơn nhiều. – itsme86

6

Bạn có thể viết global::User.GetUser()?

Xem global

4
  1. Sử dụng global::User.GetUser().

  2. Sử dụng một bí danh: using UserClass = User;

  3. Đổi tên biến.

  4. Đổi tên loại.

  5. Giảm phạm vi của biến sao cho không còn phạm vi nơi bạn đang sử dụng.

2

Hoặc, bạn có thể sử dụng bí danh cho lớp tĩnh của mình. Trong chỉ thị using của bạn, bạn có thể thêm:

using StaticUser = User; 

Sau đó, sẽ không còn mơ hồ nữa.

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