仅为一次使用而引用库的成本

Joh*_*tos 6 .net c# vb.net

我知道这是一个非常弱的例子,但我的问题更多的是为了理解更好的编程实践,所以请耐心等待我的例子本身.

在处理程序时,我遇到的情况是我必须用一个不同的字符替换字符串中的多个字符.

例如,所有字符{" ", "-", "/", "*"}必须全部替换为下划线"_".但这仅在整个程序中发生一次,结果存储在变量中.

所以,我知道我可以通过String.Replace()以下方式使用多个语句来完成它:

string ChangedString1 = MyString.Replace(" ", "_").Replace("-", "_").Replace("/", "_").Replace("*", "_");
Run Code Online (Sandbox Code Playgroud)

但我知道我也可以使用正则表达式来完成它,例如:

using System.Text.RegularExpressions;
   ...
string ChangedString2 = Regex.Replace(MyString, @"[\s-/*]", "_");
Run Code Online (Sandbox Code Playgroud)

现在,我的问题不是关于哪种方法更好,而是问题是将using System.Text.RegularExpressions;语句仅包含在一个这样的用途中是多么昂贵?并且,也许System.Text并不是那么昂贵,但是如果只为一个小用途添加其他参考资料呢?

问题是,是否存在某种行业偏好,关于在哪个方面编写自己的方法更好,而不是仅为一个或两个较小的函数包含对库的引用.或者我错误地理解参考文献是如何工作的,并且它们首先不是那么昂贵吗?

感谢您的帮助,我希望这个问题有道理!

SLa*_*aks 7

using语句是纯粹的编译时功能,可以在引用类时省略名称空间.
它们在运行时没有任何影响.

这些类在mscorlib.dll中,无论如何你都会引用它.

  • 谢谢!!- 那讲得通!但是,再次,在这种情况下,我可以理解,这不会产生任何影响,那么,但实际上只为一个函数引用外部库呢? (3认同)

nvo*_*igt 5

.NET Framework相对于程序的其余部分,对库的引用并不昂贵.您应该以最简单的方式解决手头的问题,而不用担心.

如果你需要第三方参考,你的用户需要安装它,或者它有不同的许可证,这将是另一种蠕虫,我可以看到,考虑编写一个小功能本身是有道理的.

  • @JohnBus​​tos完全正确.使用任何内置.NET功能的"成本"基本上为零,任何第三方参考的"成本"都必须进行评估,并根据每个参数的优势进行加权. (2认同)