3

我是一名长期的 V​​B.NET 开发人员,最近切换到 C#。我发现一些内置的 VB.NET 函数(早于 .NET 回到 6.0 和 BASIC 本身),例如String.Left、 或Right,或保存到注册表 (SaveSettingsGetSettings) 等高级函数明显不存在。

我所做的是在以 VB.NET 作为其语言的同一解决方案中创建一个新项目,并基本上重新创建我需要的所有在 VB.NET 中可用的功能。然后我只是把它称为我正在编写的 C# 代码。

由于在 .NET 中编译代码几乎可以归结为相同的 CIL,因此在性能方面我用什么语言编写代码或是否将 C# 与 VB 混合使用都无关紧要。

我是错还是对?

谢谢

4

4 回答 4

12

有一个命名空间Microsoft.VisualBasic,你也可以在 C# 项目中使用它:

string test = Microsoft.VisualBasic.Strings.Left("abc", 2);

不要忘记添加Microsoft.VisualBasic到项目的引用中。

于 2012-04-28T02:23:10.773 回答
1

我建议构建它,然后使用反射器/ilspy/whatever 反编译回 C# :)

于 2012-04-28T02:33:19.827 回答
0

根据我的经验,这几乎完全取决于一个人对语言的偏好和经验。您猜对了,性能方面并不重要——这两种语言都是为了生成 IL 和针对 CLR 而构建的。

在选择一种语言时,还有其他值得商榷的考虑因素,因为一种语言完全支持的某些功能不受另一种语言的支持。此外,某些语言只是为了某些目的而更具表现力,例如用于数学计算的 APL。

于 2012-04-28T02:32:21.723 回答
0

虽然使用Microsoft.VisualBasic命名空间是一个很好的解决方案,但 VB.NET 具有等效的功能(尽管字符串函数是从零开始的,而不是从 1 开始的),例如

        string str = "abcdefg";

        string left  = str.Substring(0, 2);                // Left(str, 2)
        string right = str.Substring(str.Length - 2, 2);   // Right(str, 2)

顺便说一句,注册表访问方法位于Microsoft.Win32命名空间中:请参阅RegistryKey等。

于 2012-04-28T04:56:58.687 回答