2010-11-10 39 views
11
sealed class PI 
{ 
    public static float number; 
    static PI() 
    { number = 3.141592653F; } 
    static public float val() 
    { return number; } 
} 
  1. Sự khác biệt giữa công khai tĩnh và công cộng tĩnh là gì? Chúng có thể được sử dụng theo thứ tự nào không?public static vs static public - có sự khác biệt nào không?

  2. Tôi làm cách nào để sử dụng static public float val()?

    Ứng dụng có được thực hiện ngay khi lớp học được khởi chạy không?

+0

Câu hỏi thứ hai có thể được hỏi trong một câu hỏi riêng biệt. – McKay

+1

Xem thêm chủ đề cũ hơn [Có một quy ước cho thứ tự của các công cụ sửa đổi trong C#?] (Http://stackoverflow.com/questions/191929/). –

Trả lời

9

Vâng, nó giống như tên của một người =) Gọi Tom Mike hoặc Mike Tom, không có sự khác biệt.

+7

Ngoại trừ có lẽ nếu bạn là Sing Confu và họ gọi bạn là Confu Sing. –

+1

xin vui lòng không tán tỉnh cảm ơn u –

+0

xin lỗi ........... – Singleton

9

Giới thiệu về Trật tự của các từ bổ nghĩa

Chúng có thể được sử dụng trong bất kỳ thứ tự. Nó chỉ là một sự lựa chọn phong cách mà bạn sử dụng. Tôi luôn sử dụng khả năng hiển thị trước tiên và hầu hết các mã khác cũng vậy.

Về câu hỏi thứ hai:

static public float val() 

Đây chỉ là một chức năng tĩnh. Bạn gọi nó là PI.val(). Bạn không cần một thể hiện của lớp để gọi nó, nhưng gọi nó trực tiếp trên lớp. Một hàm tĩnh không nhận được tham chiếu this, không thể là ảo, nó giống như một hàm trong một ngôn ngữ không phải là OOP, ngoại trừ việc nó sử dụng lớp như không gian tên.

7

Không có sự khác biệt. Đơn đặt hàng của họ không quan trọng đối với nhau

18

Không có sự khác biệt. Bạn được tự do chỉ định chúng theo thứ tự. Tuy nhiên, tôi thấy rằng hầu hết các nhà phát triển có xu hướng sử dụng công cộng tĩnh và không tĩnh công cộng.

+7

Có. Điều chỉnh trợ năng đầu tiên, theo quy ước. Luôn luôn. –

4

Liên quan đến câu hỏi thứ hai: Phương pháp này là có sẵn mà không cần một thể hiện của một lớp học, nó có thể được gọi là thusly:

PI.val(); 

Bởi vì lớp chỉ có các thành viên tĩnh, lớp có lẽ nên được một tĩnh và sau đó nó không bao giờ được khởi tạo.

5

Để trả lời câu hỏi thứ hai của bạn, nó có lẽ nên được viết như

public static class Pi 
{ 
    private static float pi = 0; 

    public static float GetValue() 
    { 
     if (pi == 0) 
      pi = 3.141592653F; // Expensive pi calculation goes here. 

     return pi; 
    } 
} 

Và gọi nó thusly:

float myPi = Pi.GetValue(); 

Lý do để viết một lớp học như vậy là để bộ nhớ cache giá trị, tiết kiệm thời gian trên các cuộc gọi tiếp theo đến phương thức. Nếu cách để có được pi đòi hỏi rất nhiều thời gian để thực hiện các phép tính, bạn sẽ chỉ muốn thực hiện các phép tính một lần.

+0

Ngoại trừ pi không thể rỗng vì đó là loại giá trị –

+0

@jesperll: fixed. –

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