在CI中会创建另一个类(让我们称之为Opaque),它有一个指向Node的私有指针并暴露Node的一些成员,如果这被传递给List,那么指向实际Node的指针将被“解压缩”并在内部使用,但是在C#中我没有想到一种方法来隐藏节点的其他部分对Node的引用,而不会让它无法访问List.
有没有办法做到这一点或某些具有相同功能的C#特定习语?
澄清:我想让它仅对List类可见.我已经知道了内部关键字.
解决方法 关于什么public interface INode{ string name { get; }}public class List{ private class Node : INode { public string name { get; set; } public Node Next { get; set; } } private List<Node> _items = new List<Node>(); public INode GetItemAt(int index) { return _items[index]; } public INode GetNextItem(INode item) { return (item is Node) ? ((Node)item).Next : null; }}
只有INode可以公开显示,隐藏实现细节.
如果有很多内部代码与Node一起工作,那么最好将该类标记为@ eugene-podskal建议的内部,因为生活在同一个原始程序集中的许多“朋友”都可以访问Node类. (有关此辅助功能模型的更多详细说明,请参阅MSDN: internal (C# reference))
内部概念本身没有任何错误(如提议,然后由@dasblinkenlight提出异议).它也经常被.NET框架使用,请参阅http://referencesource.microsoft.com/#q=internal中的示例或各种.NET框架内部类.可以使用ILSpy看到整个内部.NET框架命名空间的示例,例如在命名空间Microsoft.Win32.SafeHandles中的system.dll
总结以上是内存溢出为你收集整理的在C#中创建不透明指针(引用)全部内容,希望文章能够帮你解决在C#中创建不透明指针(引用)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)