gpt4 book ai didi

c# - 为什么要使用泛型和非泛型函数变体?

转载 作者:行者123 更新时间:2023-11-30 14:03:29 26 4
gpt4 key购买 nike

我一直在研究一些不同库的代码,并注意到有些会在同一个类中提供等效的泛型和非泛型函数。

一个例子是 IServiceLocator Common Service Locator 的界面项目:

public interface IServiceLocator
{
object GetInstance(Type serviceType);
object GetInstance(Type serviceType, string key);
IEnumerable<object> GetAllInstances(Type serviceType);

TService GetInstance<TService>();
TService GetInstance<TService>(string key);
IEnumerable<TService> GetAllInstances<TService>();

}

我的印象是这是为了最大化可访问性,也许来自 COM。没有这些顾虑,这似乎是冗余代码。有什么我想念的吗?

最佳答案

有时您在编译时就知道所需的类型,此时泛型可以为您提供编译时安全性和更简洁的代码。

有时您只知道在执行时需要的类型,这时泛型就变得令人头疼,因为您需要通过反射来调用它们。

同时提供这两种选项可以灵活地处理这两种情况。

关于c# - 为什么要使用泛型和非泛型函数变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060815/

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