2008-11-06 34 views
13

Tôi có thể thực sự tin tưởng và thực sự .NET để khởi tạo các trường (như ints, structs và tương tự) không? Và nếu tôi vẫn muốn khởi tạo những lĩnh vực đó - điều gì có thể là hậu quả?Khởi tạo trường theo giá trị mặc định là dư thừa

+0

Tại sao trên trái đất là tagged 'resharper' này? – developerbmw

+1

@developerbmw - điều này * đã được * gắn thẻ bằng chia sẻ lại vì ReSharper cảnh báo về điều này: [link] (https://confluence.jetbrains.com/display/ReSharper/Redundant+field+initializer) –

+0

Cảm ơn @WaiHaLee – developerbmw

Trả lời

18

Các C# specification bang trên p.305 (17.4.4)

Giá trị ban đầu của một trường, cho dù đó là một lĩnh vực tĩnh hoặc một lĩnh vực chẳng hạn, là giá trị mặc định (§12.2) của loại trường. Không thể quan sát giá trị của một trường trước khi khởi tạo mặc định này đã xảy ra, và do đó một trường không bao giờ là “chưa được khởi tạo”.

Kính trọng, tamberg

12

Có, bạn thực sự có thể tin tưởng .NET để khởi tạo trường thành giá trị mặc định của chúng. Về cơ bản không có hậu quả đối với việc thực hiện nó một cách rõ ràng. (Một báo trước nhỏ ở đây: nếu bạn khởi tạo các trường tĩnh một cách rõ ràng, thì bất kỳ ai chạy trình khởi tạo kiểu lần thứ hai thông qua sự phản chiếu sẽ kết thúc lại việc khởi tạo lại các trường đó. Đây là trường hợp góc thực!)

Làm bất cứ điều gì thúc đẩy dễ đọc nhất trong codebase cụ thể của bạn.

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