C#泛型类仅单个方法需类型参数的省略与优化方案
解决方案
最优方案:将泛型参数从类级别下移到方法级别
C# 支持方法级别的泛型定义,你完全不需要为了单个泛型方法把整个HelperFunctions类定义为泛型类,调整后的代码如下:
// 去掉类的泛型定义,改为普通静态类 internal static class HelperFunctions { // 仅给需要泛型的printArray方法添加方法级泛型参数 internal static void printArray<T>(T[] arr) { foreach (var item in arr) { System.Console.WriteLine(item); } } // 其他原有方法保持不变,不需要任何修改 internal static string printB64Res(string input) { /* 原有实现 */ } internal static byte[] ProperHex(string input) { /* 原有实现 */ } internal static string[] readFile(string path) { /* 原有实现 */ } }
调整后的调用方式可以大幅简化,不需要再给无关方法传递无意义的泛型参数:
System.Console.WriteLine("\n" + "Result of challenge 1: " + HelperFunctions.printB64Res(ch1.hexToB64())); byte[] input1 = HelperFunctions.ProperHex(this.text1); byte[] input2 = HelperFunctions.ProperHex(this.text2); // printArray调用时编译器会自动根据传入的参数推断泛型类型,不需要显式指定 HelperFunctions.printArray(HelperFunctions.readFile(dir + @"\hashes.txt"));
可选补充方案
如果后续你有多个同类型约束的泛型方法需要归类,也可以单独拆分出泛型工具类,和非泛型的通用工具类分开存放,不过当前场景下用上面的方法级泛型方案就足够解决问题。
内容的提问来源于stack exchange,提问作者CCG
相关产品推荐
相关产品推荐

