Có thể hủy khai báo biến trong C# không? Nếu vậy, làm thế nào?Không khai báo biến trong C#
Trả lời
Bạn không quan tâm đến việc undeclaring trong C# (tôi nghĩ rằng bạn có nghĩa là unallocating bằng cách này, phải không?) Hoặc bất kỳ ngôn ngữ khác. Net, thu gom rác sẽ unallocating bộ nhớ liên kết với biến .
Đối với tài nguyên không được quản lý (phông chữ, kết nối cơ sở dữ liệu, tệp, v.v.), bạn cần gọi phương thức Vứt bỏ, hoặc rõ ràng hoặc bằng cách đặt biến trong khối sử dụng.
Thông tin thêm về thu gom rác Net: http://www.csharphelp.com/2006/08/garbage-collection/
Bạn không - khi biến không nằm trong phạm vi hoặc không có nhiều tham chiếu tồn tại, nó sẽ tự động bị thu thập rác.
Tại sao bạn vẫn muốn làm điều này một cách rõ ràng; ngữ cảnh là gì? Rất có thể bạn chỉ cần sử dụng tên biến mới hoặc tái cấu trúc phần mã có liên quan thành một hàm mới.
đóng phạm vi (giới thiệu với '{') có chứa các khai báo biến:
int c=0;
{
int a=1;
{
int b=2;
c=a+b;
} // this "undeclares" b
c=c+a;
} // this "undeclares" a
Điều này không giống như undeclaring. Nó cũng không được khuyến khích thực hành ngoại trừ trong trường hợp lẻ. Nó tạo ra tùy ý làm tổ khi bạn có thể (và nên) chỉ được sử dụng một tên biến mới. – Noldorin
@Noldorin, +1 từ tôi. Trong khi nó sẽ cung cấp hiệu ứng tương tự * gần như * như là có thể undeclare một biến, nó sẽ làm cho một cơn ác mộng trong mã duy trì. Mong muốn undeclare một biến gần như luôn luôn chỉ ra một nhu cầu để refactor một phương pháp thành nhiều phương pháp riêng biệt. – Rob
@Rob: Đồng ý.Đó là một "mã mùi" trong quan điểm của tôi. – Noldorin
Tôi không nghĩ rằng có như vậy điều như các đối tượng undeclaring i .Net. Nếu đối tượng của bạn sử dụng tài nguyên cần được dọn sạch, nó sẽ thực hiện giao diện IDisposable. Nếu không thì người thu gom rác sẽ chăm sóc mọi thứ.
Nếu đối tượng là IDisposable, bạn có thể sử dụng chúng trong khối using
. Trong phần còn lại của các trường hợp tôi muốn đi với những gì Luther
đã đề cập.
using (Car myCar = new Car())
{
myCar.Run();
}
Để thêm vào câu trả lời này, trong hầu hết các trường hợp khi đối tượng là IDisposable bạn ** nên ** bọc nó trong một khối 'sử dụng'. – Kobi
Tôi không nghĩ rằng có thể bằng ngôn ngữ hiện tại. Một kịch bản hợp lý là:
void doSomething(String objectId) {
BusinessObject obj = findBusinessObject(objectId);
// from this point on the objectId should not be used anymore
undef objectId;
// continue using obj ...
}
Một trường hợp khác là khi bạn thực hiện một số phương thức từ giao diện và bạn muốn sử dụng một trong các tham số, đặc biệt là trong các phương pháp dài.
Object get(int index, Object defaultValue) {
undef index, defaultValue;
return "constant default value";
}
Đây cũng là tài liệu mà lập trình viên nghĩ về các thông số không được sử dụng khác.
- 1. C++ khai báo biến
- 2. C# tránh khai báo biến
- 3. @ đăng nhập C biến khai báo
- 4. chức năng vs khai báo biến trong C++
- 5. C++ khai báo biến được quản lý trong mã gốc
- 6. Khai báo biến bool trong c trên nền tảng Linux
- 7. SQL Khai báo biến
- 8. Khai báo biến trong tệp JavaFX CSS
- 9. C# khai báo biến thành câu lệnh if
- 10. C: Khai báo con trỏ biến động thành hàm
- 11. Khai báo biến nhiều lần
- 12. Khai báo biến enum trong Java bean
- 13. khai báo biến trong hàm sql
- 14. khai báo lớp trừu tượng trong C++
- 15. Tôi có thể khai báo biến trong html không?
- 16. Có thể khai báo biến 1 bit trong Java không?
- 17. ASP.NET C# Phải khai báo biến vô hướng
- 18. C++ * vs & trong khai báo hàm
- 19. khai báo tĩnh của m sau khai báo không tĩnh
- 20. Khai báo hàm C trong K & R
- 21. C khai báo hàm
- 22. Chuỗi C++ Khai báo
- 23. Tôi có thể khai báo các biến bên trong câu lệnh chuyển đổi Objective-C không?
- 24. Tôi có thể khai báo một biến kiểu 'giao thức' trong giao diện Objective-C không?
- 25. Có thể khai báo nhiều biến tĩnh có cùng tên trong một tệp C không?
- 26. Khai báo kích thước mảng với biến không đổi
- 27. ios - Cách khai báo biến tĩnh?
- 28. Lỗi C++: Không khai báo thành viên
- 29. Khai báo chuỗi C++
- 30. Truy cập biến được khai báo trong aspx.cs trong aspx hoặc biến khai báo trong ascx.cs ascx page
Xóa dòng mã khai báo chúng. – Brian
Bạn có thể mô tả kịch bản của mình không? Tại sao bạn nghĩ rằng bạn cần phải undeclare một biến? Bạn đang xử lý các tài nguyên không được quản lý? Bạn đang tạo ra nhiều đối tượng và giữ tài liệu tham khảo của họ? Bạn có hết hạn bất kỳ vấn đề hiệu suất nào không? Bạn đến từ C++? – Kobi
Bạn có thể xác định rõ ràng từ "undeclare" có nghĩa là gì cho bạn không? bởi vì tôi không có ý tưởng gì "undeclare" có nghĩa là một động từ. Tôi biết "biến cục bộ không khai báo" là gì - biến cục bộ mà bạn dự định khai báo nhưng bị bỏ quên làm như vậy. Các biến cục bộ không khai báo là một lỗi trong C# nhưng được cho phép trong một số ngôn ngữ, như VBScript. Tôi không thể hiểu được ý của bạn bằng hình thức động từ. Bạn có thể làm rõ? –