学习C#帮助或阻碍VB.NET学习

时间:2008-11-21 08:22:05

标签: c# vb.net

我刚刚搬到工作岗位,从VB 6转到VB.Net,发现学习跳跃相当陡峭,对象/概念方面的问题更多问题..但现在到了那里......但是就像我一样10/15年前汇编/ C ++正在考虑学习C ++ / C#.Net(XNA游戏库叫我的名字)但不确定它是否会妨碍我的VB.NET学习......或者我应该得到自己的认证< / p>

9 个答案:

答案 0 :(得分:4)

我(当天回来)是一个VB6开发者,我希望它有所帮助。 VB6开发人员在.NET中继续编写VB6有很多评论倾向;即使只是简单地了解一下C#,也可以帮助您将VB.NET视为.NET语言,而不是Visual Studio 6的祖先。

当然,你可能会发现(就像我一样)你不想在C#之后回到VB.NET; -p

但正如已经提到的那样 - 框架是完全相同的。使用C#4.0,许多差异将变得更小(使用“动态”使C#更容易与后期绑定的COM进行通信,并且命名参数/ auto-ref使得类型化COM更容易)。

在VS2010中融合C#4.0和VB.NET的功能集有很多动力

答案 1 :(得分:3)

对我来说,.NET的最大障碍是学习框架中可用的东西。因此,如果你发现在C#中编码更容易,那就意味着你只会挣扎一件事而不是两件事。一旦你了解了这个框架,它只是语法,你可以使用VB完成95%的C#内容。

此外,C#将强制您以更加面向对象的方式编写代码,因为您无法回归到VB6样式的编码。

'yield return'是一个在VB9中没有等效内容的例子(有传言说这是为VBX添加的)。

答案 2 :(得分:3)

除了您需要了解的大部分内容是关于Frameworks的库,学习另一种针对.NET的CLR的语法非常有用。

了解另一种语言如何表达相同的概念有助于您将概念与语言分开。这总是有用的,因为概念是相当恒定的(例如阴影(VB)或隐藏(C#)函数),而不同的语言使用不同的单词来表达它们。

在设计代码时,更好地理解这些概念将有助于你理解它们。

答案 3 :(得分:1)

IMX,学习C#帮助我学习VB。这是关于看到以两种方式表达的相同概念而不仅仅是一种方式。

编辑:安东尼琼斯打败了我: - )

答案 4 :(得分:1)

一方面,如果你的方法没有返回任何内容,那么你必须在VB.NET中创建一个Sub,如果它返回任何内容,那么称之为Function
我刚刚从C#切换到VB.NET(客户端要求),我仍然习惯了它的滋扰:( 我会说VB中的编码几乎从.NET中取出OOPS

答案 5 :(得分:0)

在切换到.NET之前,我还是一名VB6开发人员。首先我尝试使用VB.Net,但它从未感到舒服,所以我尝试了C#并爱上了它。 : - )

在前面的回复中提到了一些差异,你可以在VB.Net中做些事情,你不能在C#中(如索引属性),反之亦然。但除此之外,差异纯粹是在语法上。实际上有几个可用的转换器将C#转换为VB.Net并返回。

所以我建议你试试C#。既然你知道一些C ++,那么正确的语法应该不是很难,其余的就是学习使用这个框架。

答案 6 :(得分:0)

作为一名忠诚的.Net开发人员,我曾参与过C#和VB.net的大型项目。看过两种语言的优点和缺点后,我发现VB有时是最令人沮丧的。

问题在于,使用VB(取决于你的项目设置),它会神奇地执行隐式操作,例如强制转换。这有时会有所帮助,但在一般情况下,您不希望代码执行某些操作,除非您明确告诉它(这是C#的行为方式,以明确的方式)。我更喜欢编译器时间错误告诉我在实时部署中我无法从一种对象类型转换为另一种对象类型而不是运行时异常。

我发现VB的这个隐含方面往往会妨碍“仅VB”开发人员对幕后发生的事情的理解。对于这些人来说,看C#似乎触发了一些灯泡,他们说“啊哈!”,这就是VB在执行此操作时实际做的事情。“

我建议你试试C#,它会给你一个新的视角,你可能会发现你真的很喜欢它。

答案 7 :(得分:0)

学习C#唯一真正的障碍就是文档。对于C#用户来说似乎有更多的信息,并且试图找到有时非常标准的C#的VB等效语法可能会很痛苦。

话虽如此......要知道很多不同的方法来做同样的事情,这绝非痛苦。

答案 8 :(得分:0)

我同意Garry的观点,最大的问题是API。

我个人观察到的第二大问题是VB6开发人员在VB.NET中编写VB6代码。对于VB6开发人员而言,这是学习C#的一个很好的理由 - 它迫使你以.NET风格思考。