Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.NET与VB.NET结合的缺点_C#_.net_Vb.net - Fatal编程技术网

C#.NET与VB.NET结合的缺点

C#.NET与VB.NET结合的缺点,c#,.net,vb.net,C#,.net,Vb.net,我是一名长期的VB.NET开发人员,最近转用了C#。我发现一些内置的VB.NET函数(早于.NET 6.0和BASIC本身)如字符串.Left,或Right,或高级函数,如保存到注册表(SaveSettings和GetSettings)明显不存在 我所做的就是用VB.NET作为它的语言在同一个解决方案中创建一个新项目,并重新创建基本上在VB.NET中可用的所有我需要的函数。然后我把它称为我正在写的C代码 由于在.NET中编译代码基本上可以归结为同一个CIL,因此从性能角度看,我用什么语言编写代码

我是一名长期的VB.NET开发人员,最近转用了C#。我发现一些内置的VB.NET函数(早于.NET 6.0和BASIC本身)如
字符串.Left
,或
Right
,或高级函数,如保存到注册表(
SaveSettings
GetSettings
)明显不存在

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

由于在.NET中编译代码基本上可以归结为同一个CIL,因此从性能角度看,我用什么语言编写代码,或者我是否将C#与VB混合使用,都不重要

我是对还是错


谢谢

有一个名称空间,您也可以在C#项目中使用它:

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

别忘了将Microsoft.VisualBasic添加到项目的引用中。

根据我的经验,这几乎完全是一个人对语言的偏好和经验的问题。您可以正确地猜测,从性能角度看,这并不重要——这两种语言都是为了生成IL和针对CLR而构建的


在选择一种语言时,还需要考虑其他一些有争议的因素,因为一种语言完全支持的某些功能不受另一种语言的支持。另外,有些语言在某些方面更具表现力,例如用于数学计算的APL。

我建议先构建它,然后使用reflector/ilspy/whatever将其反编译回C:)

而使用Microsoft的
名称空间是一个很好的解决方案,VB.NET具有同等的功能(尽管字符串函数是基于零而不是基于1的),例如


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

@Devmonster看看这个主题。我想你会发现它对你有帮助。@David这是一本很棒的书。谢谢!我意识到如果有人必须修复我的代码,你需要同时拥有c#和vb.net的资源。尽管我在考虑bas像我提到的ic功能对于经验丰富的用户来说不应该是一个挑战developer@MitchWheat这就是我想要使用的代码,而不是编写自己的C#代码(据我所知,这可能效率低下)@Devmonster我理解。主要的理想是在项目中管理多种语言会很费劲,不管是单独使用还是与他人使用。我很高兴您喜欢这本书,并希望它能有所帮助。我也想到了这一点,因为VB6中几乎所有的函数都在这个名称空间中,所以使用它是有意义的。不过,我想我还是想保留我的C#C对所有C#进行ode,只调用其他项目(如VB)中的对象,以保持其干净。感谢您的建议,thoughIMO在C#中使用
Microsoft.VisualBasic
命名空间与在整个项目中混合使用VB.NET和C#相比,具有相同或更好的可读性和可维护性。C#开发人员能够轻松理解这些方法的作用通过MSDN,但不太可能读VB.NET模块那么快。此外,此程序集是整个.NET框架的一部分,而不是VB.NET的一部分。请参阅:。一个在C中不可用的VB.NET“字符串函数”是在
=
的左半部分使用
mid
。例如,可以说
mid(myString,3,2)=“OK”
更改字符串的第三个和第四个字符。实际行为本质上是
myString=myString.SubString(0,2)&“OK”&myString.SubString(4)
,但更易于阅读。
        string str = "abcdefg";

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