gpt4 book ai didi

c# - 将变量声明为接口(interface)类型是一种好的/可接受的做法吗?

转载 作者:太空狗 更新时间:2023-10-29 22:05:23 26 4
gpt4 key购买 nike

使用接口(interface)声明变量是一种好习惯吗?在我的公司,我们对此进行了讨论,我非常反对。

例如我想要一个存储字符串键和字符串值对的集合。我也不想允许重复。很明显,我在我的类中声明了 Dictionary 变量,该变量将公开(通过属性)。

Dictionary<string, string> myDic;

但是,一位团队成员说这不是一个好的做法!他说你用 IDictionary 声明一个变量,这将允许消费者分配他们想要的任何集合(实现 IDictionary)。例如哈希表或字典

IDictionary myDic;
myDic = new Hashtable(); // Consumer's code

mydic = new Dictionary<string, string>(); // Consumer's code -

我现在可以知道,将变量声明为接口(interface)类型真的是一个好习惯吗?当我清楚地知道该变量的预期结果时,也是如此吗?

最佳答案

对于局部变量、私有(private)字段等来说,这简直是天方夜谭。使用接口(interface)类型定义公共(public)属性有一个好处。例如,当我看到一个类公开类型为 List<string> 的属性时,我感到畏缩。 .

如果您正在使用依赖注入(inject)或像 MEF 这样的组合框架,那么强烈建议使用接口(interface)而不是具体实现。它使您能够轻松地用测试实现替换实现。

关于c# - 将变量声明为接口(interface)类型是一种好的/可接受的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4457359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com