- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个实现内部接口(interface)的内部类。谁能解释为什么我不能将我的方法声明为内部方法,为什么我会收到以下错误:“无法实现接口(interface)成员,因为它不是公共(public)的”。
我知道我必须将该方法声明为公开的,但这对我来说完全没有意义。
如果接口(interface)和类都是内部的,那么将方法声明为 public 有什么意义呢?这不是误导吗?
我已阅读 a related question on this site .它不是完全重复的,因为我的类是内部的。
câu trả lời hay nhất
简单地说:因为这就是语言设计者设计它的方式。即使在内部接口(interface)中,方法也是隐式公开的。它确实使事情变得简单,但在其他方面却很痛苦。
如果你想要一个公共(public)类,你想在其中“隐藏”内部接口(interface)的使用,你可以使用显式接口(interface)实现——尽管这有其他缺点。
当然,如果您的类是内部类,那么方法是否公开并不重要 - 其他程序集将无法调用这些方法,因为它们看不到类型。
我绝对同意,C#(或一般的 .NET)没有像围绕内部接口(interface)那样精心设计。
就您收到错误消息的确切而言 - C# 4 规范(接口(interface)映射)的第 13.4.4 节就是原因。仅为非静态公共(public)成员和显式接口(interface)成员实现找到实现 - 如果接口(interface)中有任何未实现的成员,则会发生错误。
关于c# - 为什么实现内部接口(interface)的方法必须是公共(public)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11162336/
Tôi muốn hiểu cách hoạt động của phương thức Ruby(). Tôi đã thử tìm kiếm trên Google bằng "phương pháp Ruby" nhưng đó không phải là thứ tôi cần. Tôi cũng đã xem ruby-doc.org nhưng tôi không tìm thấy phương pháp này.
Phương thức Kiểm tra thực hiện tìm kiếm biểu thức chính quy trên chuỗi đã chỉ định và trả về giá trị Boolean cho biết liệu có tìm thấy mẫu phù hợp hay không. Đối tượng tham số object.Test(string) là bắt buộc. luôn luôn là một
Phương thức Thay thế thay thế văn bản được tìm thấy trong tìm kiếm biểu thức chính quy. Đối tượng tham số object.Replace(string1, string2) là bắt buộc. Luôn là tên của đối tượng RegExp.
Phương thức Raise tạo ra một đối tượng lỗi thời gian chạy.Raise(số, nguồn, mô tả, tệp trợ giúp, bối cảnh trợ giúp) Đối tượng tham số phải là
Phương thức Thực thi thực hiện tìm kiếm biểu thức chính quy trên chuỗi đã chỉ định. Đối tượng tham số object.Execute(string) là bắt buộc. Luôn là tên của đối tượng RegExp. sợi dây
Phương thức Clear xóa tất cả các cài đặt thuộc tính của đối tượng Err. object. Đối tượng Clear phải là tên của đối tượng Err. Mô tả Sau khi xử lý lỗi, hãy sử dụng Clear để xóa rõ ràng đối tượng Err. cái này
Phương thức CopyFile sao chép một hoặc nhiều tệp từ vị trí này sang vị trí khác. object.CopyFile đối tượng tham số nguồn, đích [, ghi đè] được yêu cầu
Phương thức Sao chép sao chép tệp hoặc thư mục được chỉ định từ vị trí này sang vị trí khác. đối tượng tham số object.Copy đích [, ghi đè] là bắt buộc. Nên là Tệp hoặc F
Phương thức Close đóng tệp TextStream đang mở. Đối tượng object.Close phải là tên của đối tượng TextStream. Ví dụ sau minh họa cách sử dụng phương thức Close.
Phương thức BuildPath thêm tên vào đường dẫn hiện có. Đối tượng tham số object.BuildPath(path, name) là bắt buộc. Phải là tên của đối tượng FileSystemObject
Phương thức GetFolder trả về đối tượng Thư mục tương ứng với một thư mục trong đường dẫn đã chỉ định. Đối tượng tham số object.GetFolder(folderspec) là bắt buộc. Phải là FileSy
Phương thức GetFileName trả về tệp hoặc thư mục cuối cùng tại đường dẫn đã chỉ định (không phải một phần của đường dẫn ổ đĩa đã chỉ định). Đối tượng tham số object.GetFileName(pathspec) là bắt buộc. nên
Phương thức GetFile trả về một đối tượng File tương ứng với một tệp trong đường dẫn đã chỉ định. Đối tượng tham số object.GetFile(filespec) là bắt buộc. FileSystemObject dự kiến
Phương thức GetExtensionName trả về một chuỗi chứa tên phần mở rộng của thành phần cuối cùng của đường dẫn. Đối tượng tham số object.GetExtensionName(path) là bắt buộc. trả lời
Phương thức GetDriveName trả về một chuỗi chứa tên ổ đĩa trong đường dẫn đã chỉ định. Đối tượng tham số object.GetDriveName(path) là bắt buộc. Đối tượng hệ thống tệp dự kiến
Phương thức GetDrive trả về đối tượng Drive tương ứng với ổ đĩa trong đường dẫn đã chỉ định. object.GetDrive đối tượng tham số drivespec là bắt buộc. Hệ thống tệp dự kiếnO
Phương thức GetBaseName trả về một chuỗi chứa tên cơ sở của tệp (không có phần mở rộng) hoặc thư mục trong đặc tả đường dẫn được cung cấp. Đối tượng tham số object.GetBaseName(path) là bắt buộc
Phương thức GetAbsolutePathName trả về một đường dẫn đầy đủ và được xác định rõ ràng từ đường dẫn đã chỉ định được cung cấp. Đối tượng tham số object.GetAbsolutePathName(pathspec)
Phương thức FolderExists trả về True nếu thư mục được chỉ định tồn tại; nếu không nó sẽ trả về Sai. Cần có đối tượng tham số object.FolderExists(folderspec)
Phương thức FileExists trả về True nếu tệp được chỉ định tồn tại; nếu không nó sẽ trả về Sai. Đối tượng tham số object.FileExists(filespec) là bắt buộc. Phải là FileS
Tôi là một lập trình viên xuất sắc, rất giỏi!