2009-11-27 32 views
24

Trong C bạn có thể định nghĩa các hằng số như thế nàyCách xác định hằng số trong Visual C# như #define trong C?

#define NUMBER 9 

để bất cứ nơi nào SỐ xuất hiện trong chương trình nó được thay thế bằng 9. Nhưng Visual C# không làm điều này. Làm thế nào là nó được thực hiện?

+0

Trường hợp sử dụng tốt hơn cho C#: '#define SOMETYPE typeof (MyClass)', để sử dụng để giữ mọi thứ D.R.Y. khi gọi một cái gì đó như 'SomeMethod ()'. –

Trả lời

48
public const int NUMBER = 9; 

Bạn sẽ cần phải đặt nó trong một lớp học ở đâu đó, và việc sử dụng sẽ ClassName.NUMBER

+3

Nếu nó không phải là một vĩ mô, tại sao có các hideous tất cả các mũ đặt tên? Cũng có thể cung cấp cho hằng số một tên có ý nghĩa và xem xét nó hợp lệ một hằng số thay vì giả vờ rằng nó là một vĩ mô. –

+2

Có cách nào xác định các biến toàn bộ mà không cần phải được gọi bằng cách sử dụng một lớp không? – MichaelvdNet

+2

@MrUniverse Tôi đồng ý với bạn, tôi ghét khi tôi thấy 'Constants.SECURITY_KEY'. Tôi thích 'Constants.SecurityKey'. –

15

Bạn không thể thực hiện việc này trong C#. Sử dụng một số const int để thay thế.

13

Kiểm tra How to: Define Constants in C# trên MSDN:

Trong C# các #define Preprocessor chỉ thị không thể được sử dụng để xác định các hằng số theo cách thường là được sử dụng trong C và C++.

13
static class Constants 
{ 
    public const int MIN_LENGTH = 5; 
    public const int MIN_WIDTH = 5; 
    public const int MIN_HEIGHT = 6; 
} 

// elsewhere 
public CBox() 
{ 
    length = Constants.MIN_LENGTH; 
    width = Constants.MIN_WIDTH; 
    height = Constants.MIN_HEIGHT; 
} 
+5

Chào mừng bạn đến với SO, đây là một cách hay để giải thích lý do tại sao bạn nên sử dụng giải pháp của mình chứ không phải chỉ là cách thực hiện. Điều đó sẽ làm cho câu trả lời của bạn có giá trị hơn và giúp người đọc tiếp tục hiểu rõ hơn về cách bạn làm điều đó. Tôi cũng khuyên bạn nên xem Câu Hỏi Thường Gặp của chúng tôi: http://stackoverflow.com/faq. – ForceMagic

+2

Nếu nó không phải là một vĩ mô, tại sao có tất cả các mũ ghê tởm đặt tên? Cũng có thể cung cấp cho họ tên có ý nghĩa và xem xét chúng hằng số hợp lệ thay vì giả vờ rằng họ là macro. –

1

bằng ngôn ngữ c: #define (ví dụ #define truy cập 100)

bằng ngôn ngữ lắp ráp: equ (ví dụ như truy cập equ 100)

trong C# ngôn ngữ: according to msdn refrence: Bạn sử dụng #define để xác định biểu tượng. Khi bạn sử dụng các biểu tượng như biểu thức đã vượt qua các chỉ thị #if, khái niệm sẽ đánh giá đúng sự thật, như ví dụ sau đây cho thấy:

# define DEBUG

Chỉ thị #define không thể được sử dụng để khai báo giá trị không đổi như thường được thực hiện trong C và C++. Hằng số trong C# được xác định tốt nhất là các thành viên tĩnh của một lớp hoặc cấu trúc. Nếu bạn có một số hằng số như vậy, hãy xem xét việc tạo một lớp "Constants" riêng biệt để giữ chúng.

0

Trong C#, theo thư viện MSDN, chúng tôi có từ khóa "const" làm công việc của từ khóa "#define" bằng các ngôn ngữ khác.

"... khi trình biên dịch gặp mã định danh liên tục trong mã nguồn C# (ví dụ, tháng), nó thay thế giá trị trực tiếp sang mã ngôn ngữ trung gian (IL) mà nó tạo." (https://msdn.microsoft.com/en-us/library/ms173119.aspx)

Khởi tạo hằng số tại thời điểm khai báo vì không có thay đổi.

public const int cMonths = 12; 
Các vấn đề liên quan