- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在坚持代码分析错误的过程中,我正在将我的属性更改为具有私有(private) setter 。然后我开始尝试更多地了解Tại sao。根据一些研究,MS 说 cái này :
A writable collection property allows a user to replace the collection with a completely different collection.
答案 đây 指出:
Adding a public setter on a
Danh sách
object is dangerous.
但是没有列出它危险的lý do。这就是我很好奇的部分。
如果我们有这个集合:
public List Foos { get; set; }
为什么要将 setter 设为私有(private)?显然我们不希望客户端代码thay thế集合,但是如果客户端可以删除每个元素,然后添加他们想要的任何元素,那有什么意义?这与完全替换集合不一样吗?遵循此代码分析规则如何提供值(value)?
câu trả lời hay nhất
不公开 setter 可以防止集合被赋值为 vô giá trị
的情况。 vô giá trị
和没有任何值的集合是有区别的。考虑:
for (var value in this.myCollection){//做某事
当没有值时(即有人对每个值都调用了 Remove
),没有什么不好的事情发生。但是,当 this.myCollection
为 null 时,将抛出 NullReferenceException
。
代码分析假设您的代码在操作之前不检查 myCollection
是否为 null。
它可能也是对 System.Collections.Concurrent
中定义的线程安全集合类型的额外保护。想象一些线程试图通过覆盖它来替换整个集合。通过摆脱公共(public) setter,线程唯一的选择就是调用线程安全的 Thêm vào
Và Remove
phương pháp.
关于c# - 集合属性应该是只读的——漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11349507/
Bạn có thể so sánh các thuộc tính mà tôi muốn tắt hộp văn bản "txtName". Có hai cách sử dụng javascript, txtName.disabled = true bằng ASP.NET, phương pháp nào tốt hơn và tại sao? Câu trả lời tốt nhất cho tôi
Thuộc tính Count trả về số mục mà một bộ sưu tập hoặc đối tượng Từ điển chứa. Chỉ đọc. Đối tượng object.Count có thể là bất kỳ bộ sưu tập hoặc cặp nào được liệt kê trong danh sách "áp dụng cho"
Thuộc tính CompareMode đặt và trả về chế độ so sánh để so sánh các khóa chuỗi trong đối tượng Từ điển. tham số object.CompareMode[=so sánh]
Thuộc tính cột là thuộc tính chỉ đọc trả về số cột của vị trí ký tự hiện tại trong tệp TextStream. Đối tượng object.Column thường là tên của đối tượng TextStream.
Thuộc tính AvailableSpace trả về lượng không gian có sẵn cho người dùng trên một ổ đĩa hoặc mạng chia sẻ được chỉ định. đối tượng object.AvailableSpace phải là Drive
Thuộc tính Thuộc tính đặt hoặc trả về các thuộc tính của tệp hoặc thư mục. Đọc-ghi hoặc chỉ đọc (tùy thuộc vào thuộc tính). đối tượng tham số object.Attribut [= newattributes]
Thuộc tính AtEndOfStream Trả về True nếu con trỏ tệp ở cuối tệp TextStream; nếu không thì trả về Sai nếu nó không ở chế độ chỉ đọc. đối tượng.A
Thuộc tính AtEndOfLine Trong tệp TextStream, nếu con trỏ tệp trỏ đến dấu cuối dòng, nó sẽ trả về True; nếu không, nó sẽ trả về Sai nếu nó không ở chế độ chỉ đọc. đối tượng.AtEn
Thuộc tính RootFolder trả về một đối tượng Thư mục đại diện cho thư mục gốc của ổ đĩa được chỉ định. Chỉ đọc. Đối tượng object.RootFolder phải là Dr
Thuộc tính Path trả về đường dẫn tới tệp, thư mục hoặc ổ đĩa đã chỉ định. Đối tượng object.Path phải là tên của đối tượng Tệp, Thư mục hoặc Drive. Giải thích Đối với một ổ đĩa, đường dẫn không chứa thư mục gốc.
Thuộc tính ParentFolder trả về thư mục mẹ của tệp hoặc thư mục đã chỉ định. Chỉ đọc. Đối tượng object.ParentFolder phải là tên của đối tượng Tệp hoặc Thư mục. Giải thích đoạn mã sau
Thuộc tính Name đặt hoặc trả về tên của tệp hoặc thư mục được chỉ định. Có thể đọc và ghi được. đối tượng tham số object.Name [= newname] là bắt buộc. Nên là Tệp hoặc &
Thuộc tính dòng là thuộc tính chỉ đọc, trả về số dòng hiện tại trong tệp TextStream. Đối tượng object.Line thường là tên của đối tượng TextStream. Tài liệu chỉ
Thuộc tính Key đặt khóa trong đối tượng Từ điển. object.Key(key) = đối tượng tham số newkey là bắt buộc. Thông thường từ điển
Thuộc tính Item đặt hoặc trả về mục tương ứng với khóa được chỉ định trong đối tượng Từ điển hoặc trả về mục trong bộ sưu tập dựa trên khóa đã chỉ định.
Thuộc tính IsRootFolder trả về True nếu thư mục được chỉ định là thư mục gốc; nếu không, nó sẽ trả về Sai. Đối tượng object.IsRootFolder phải là &n
Thuộc tính IsReady trả về True nếu ổ đĩa được chỉ định đã sẵn sàng; nếu không, nó sẽ trả về Sai. object.Đối tượng IsReady phải là Drive&nbs
Thuộc tính FreeSpace trả về dung lượng có sẵn cho người dùng trên một ổ đĩa hoặc mạng chia sẻ được chỉ định. Chỉ đọc. object. Đối tượng FreeSpace phải là tên của đối tượng Drive.
Thuộc tính FileSystem trả về loại hệ thống tệp được sử dụng bởi ổ đĩa được chỉ định. Đối tượng object.FileSystem phải là tên của đối tượng Drive. Mô tả có thể
Thuộc tính Tệp trả về một bộ sưu tập Tệp bao gồm tất cả các đối tượng Tệp trong thư mục đã chỉ định, bao gồm các tệp ẩn và tệp hệ thống. object.Files đối tượng&n
Tôi là một lập trình viên xuất sắc, rất giỏi!