Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言的实现差异#_C#_Interface - Fatal编程技术网

C# C语言的实现差异#

C# C语言的实现差异#,c#,interface,C#,Interface,我是C#的学习者。你能解释一下分配a和B的区别吗 集合到接口 我看到一些例子,初始化 List<int> few = new List<int>() { 12, 123, 211, 200 }; List now=newlist(){12,123,211,200}; 但有些人将集合分配给接口 IList<int> someList=new List<int>(){12,23,56,78}; IList someList=new List()

我是C#的学习者。你能解释一下分配a和B的区别吗 集合到接口

我看到一些例子,初始化

List<int> few = new List<int>() { 12, 123, 211, 200 }; 
List now=newlist(){12,123,211,200};
但有些人将集合分配给接口

IList<int> someList=new List<int>(){12,23,56,78};
IList someList=new List(){12,23,56,78};

我们什么时候需要后面的方法?。如果您愿意提供一个示例,那么示例的利弊将很好地教育我。

使用IList时,您将只能访问IList中的方法,而不能访问列表中的方法(而不是IList中的方法).

通常,您应该选择在公共界面中公开
IList
而不是
List
,而如果列表仅在方法中使用,则差别不大:

public IList<int> GetSomeInts()
{
    List<int> result = new List<int>() { 12, 123, 211, 200 };
    return result;
}
public IList GetSomeInts()
{
列表结果=新列表(){12,123,211,200};
返回结果;
}

通过这种方式,可以将公共接口与方法内部实际使用的具体类型分离。例如,您可以选择将的内部使用替换为使用,而不影响公共界面或它的用户,因为这两个实现都是一个具体的实现。如果你是唯一的消费者,这是最合适的。当多个使用者访问时,IList提供了灵活性。因此,如果实现发生变化,其他消费者不会改变某件事

可能的二聚硅酸钠也: