c# - 是否可以创建构造函数扩展方法?如何?

标签 c# constructor extension-methods

是否可以添加构造函数扩展方法?

示例用例

我想添加一个 List< T > 构造函数以从给定的部分填充的缓冲区中接收特定数量的字节(没有仅复制相关字节等的开销):

...
public static List<T>(this List<T> l, T[] a, int n)
{
    for (int i = 0; i < n; i++)
       l.Add(a[i]);
}
...

所以用法是:

List<byte> some_list = new List<byte>(my_byte_array,number_of_bytes);

我已经添加了一个 AddRange 扩展方法:

public static void AddRange<T>(this List<T> l, T[] a, int n)
{
   for (int i = 0; i < n; i++)
       l.Add(a[i]);
}

我也想作为构造函数来做。可能吗?如果是 - 如何?

最佳答案

不,但是如果您更改了 AddRange 签名以返回列表实例,那么您至少可以这样做

var list = new List<int>().AddRange(array, n);

哪个恕我直言可能比重载构造函数更清楚。

关于c# - 是否可以创建构造函数扩展方法?如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4782034/

相关文章:

c# - Microsoft Cognitive speech services - Speech to text batch transcription 权限错误

c++ - 使用构造函数参数实例化类对象和不带参数 C++ 的 * 运算符之间的区别

java - 如何在 Spring Boot 应用程序中 Autowiring 具有带参数的构造函数的组件

c# - 通用类的扩展方法

c# - 通过反射调用扩展方法(Type.InvokeMember)

c# - 关于使代码符合 C# 的 Sonar 规则 S1451 的问题

c# - 如何获取 ListView 中的起始索引和可见项数?

exception-handling - Ninject - 如何在构造过程中识别哪个类抛出异常

c# - 子查询中的 LINQ-to-SQL 和扩展方法

c# - WPF数据网格箭头(右/左)键导航异常