Talk:Comparison of C Sharp and Visual Basic .NET

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
WikiProject iconMicrosoft: .NET Start‑class
WikiProject iconThis article is within the scope of WikiProject Microsoft, a collaborative effort to improve the coverage of articles relating to Microsoft on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
StartThis article has been rated as Start-class on Wikipedia's content assessment scale.
???This article has not yet received a rating on the project's importance scale.
Taskforce icon
This article is supported by WikiProject .NET (assessed as Low-importance).

This page is poorly written[edit]

This page is horrible, and is very POV. It should be tagged for a complete rewrite. 65.161.188.11 18:50, 23 April 2007 (UTC)[reply]

I second that. This is nowhere on par of a dictionary entry. --Wng z3r0 11:46, 16 May 2007 (UTC)[reply]

I third that. It is extremely POV for Visual Basic and against C#. (I don't use either language reglarly, BTW) Does not mention a host of C# features and capabilities that aren't in VB. --71.214.216.41 (talk) 18:33, 21 December 2010 (UTC)[reply]

I contradict that. Meanwhile it is not biased any more, and there is only little POV left. However, it is still not really a topic for an encyclopedia and may partly be outdated. On the other hand it answers a question very frequently asked by programmers. — Preceding unsigned comment added by 62.245.164.114 (talk) 11:59, 16 July 2014 (UTC)[reply]

Syntax Comparisons[edit]

I just added the Syntax Comparisons section. Could someone update the table formatting for me (I'm not sure how)? Of course, expanding the list would also be nice! --Jimmytharpe 18:55, 25 January 2007 (UTC)[reply]

Moved to Archives[edit]

I have moved the content from this page to the /Archive01. The topics did not seem to be getting any additional discussion. I kept anything with the most recent comment in 2007. Gaijin42 14:54, 5 March 2007 (UTC)[reply]

Adoption[edit]

I added the citation needed tag to the "internal microsoft surveys" bullet in the adoption section. If a citation doesn't show up in the next few days I will drop the bullet. Gaijin42 14:54, 5 March 2007 (UTC)[reply]


I dropped this per the note above. Gaijin42 04:30, 14 March 2007 (UTC)[reply]

Rewrite tag[edit]

There has been significant input and change since my original submission of this article. I am going to remove the rewite tag. Gaijin42 14:54, 5 March 2007 (UTC)[reply]

Who wrote this? It's very un-encyclopedia-like. "We have large VB projects that are unusable in VB.Net due to the size of the project. If your solution is likely to include a large number of classes, I would strongly recommend c#"--214.3.80.29 04:59, 22 April 2007 (UTC)[reply]

No Iterators in VBnet?[edit]

For i As Integer = 1 To 3
 ' do something
Next
For Each i As Integer In CollectionOfInt
 ' ...
Next


looks pretty much like iterators, doesn't it? —Preceding unsigned comment added by 89.246.47.4 (talk) 18:40, 9 October 2007 (UTC)[reply]

Thats not waht they mean by iterators. Iterators are a special syntax introduced in C# 2.0 that make it much easier to develop enumerators (i.e., the "yield return" statement). It allows one to write a method that returns an enumerator, but instead of executing fully when it is called, it executes until it yields its first value, which becomes the first value of the enumeration. When the next value is requested via the enumerator, the method begins executing again from where it left off (not at the beginning of the method). Its more or less a specialized form of coroutines. —Preceding unsigned comment added by Nimrand (talkcontribs) 14:16, 12 October 2007 (UTC)[reply]

Performance[edit]

Is there no performance increase when using C# rather than VB.NET? A few years ago I had a talk from a senior developer at tesco.com who said explicitly that they had to migrate from VB.NET to C# because VB.NET was just too slow. This was definitely prior to .net 2.0 and may even have been 1.0. It seemed strange to me at the time as I was under the impression that both compile to the same thing prior to execution and the difference is only in the syntax. —Preceding unsigned comment added by 86.16.149.12 (talk) 14:00, 2 January 2008 (UTC)[reply]


Ultimately C# and VB.Net compile down to MSIL/CIL where the execution is identical. However, certain constructs that are easy to use in C# generate better IL than the easy to use VB equivilent, and visa versa. Usually there are ways to generate the better IL in the source language, but they may be a bit more cumbersome to maintain. Of much larger impact is the social patterns that are common to VB and C#, and the historical backgrounds of the developers. This info is entirely unprovable, and therefore not applicable to the main article, but it is my opinion that people who naturally gravitate to C# are much more aware of the code that they are writing, and what the impact is. VB developers are used to having things hidden from them, having magic wands that generate lots of code automatically, and thus are not as intimately aware of some of the performance considerations. But that is an issue of the developer, and not the language. (You may begin your response flames everyone :) )

Gaijin42 (talk) 20:52, 15 January 2008 (UTC)[reply]

There is no real performance difference between VB.NET and C#. If they migrated from VB.NET to C# because of performance issues, they don't know what they're doing. 12.10.248.51 (talk) 19:17, 1 October 2008 (UTC)[reply]

New Direction[edit]

This article still needs a lot of work. None of it is cited, and I suspect a lot of it is original research. The topic itself almost encourages POV issues. What about changing this article from a comparison of C# and VB.NET to an overview of .NET Languages in general? To me, that would be a more encyclopedic topic.Nimrand 15:03, 2 December 2007 (UTC)[reply]

I agree that the article still needs work, and as all language comparisons are, this topic is ripe for POV. However, I think the solution for POV is dilligence, and not a change such as you propose. This idea was brought up when I first started this page, and my opinion now is as it was then : Technically yes, this page would be more encyclopedic as a comparison of CLI languages. However, in practicality, the only two languages that matter are C# and VB.Net. If you need a job in .net, those are the languages you need to learn. If you are transitioning from some other platform (java, classic asp, c++, whatever) to .net, these are the two languages that you will choose between. Gaijin42 20:55, 3 December 2007 (UTC)[reply]
First of all, I'm suggesting that we title it as an "overview" of .NET languages, not a "comparison." The word "overview" more clearly conveys to the reader and potential editors that the purpose of the article is to provide an informative discussion on the characteristics of the various .NET languages and the role each language plays in the industry, rather than to judge which language is "better". Secondly, refocusing the topic in this manner frees up the article to give weight to all .NET languages according to its overall importance, rather than being limited almost exclusively to C# and VB.NET. C# and VB.NET are the two most important, or at least the most common, but C++/CLI and other languages also play an important role. Lastly, I find the choice in topic as it is currently phrased to be questionable. It seems a bit hard to justify that there is reason for such an article to exist except as a forum for people to catalog the arguments for why one language is better than the other, and the fact that this article has only a single cited source after a moderately high volume of edits over 1.5+ years indicates to me that I may be right. With the current emphasis on quality over quantity on Wikipedia, I suspect that if the article continues in its current direction, it will continue to flounder and eventually be nominated for deletion. Nimrand (talk) 03:51, 6 December 2007 (UTC)[reply]
Instinctively I like the word overview, and I do think that would lead to a better tier of discussion, however I modeled this page after the C# vs Java page and I do think that one of the goals of wikipedia is consistency. There is a whole category for language comparisons, and this article fits soundly in that category. The arguments which you make apply equally well to all those other comparison articles.If you are proposing a larger effort to re-organize all languages into overviews instead of comparisons, that would be logical, but I think the logistics of such a move would make it unrealistic. I am all for efforts to improve the NPOV and other aspects of quality of this article; but I am opposed to conceptually changing the article from its goal of comparing and contrasting the two languages (as well as minor ones) to aid in giving people understanding about the practical choices they must make in the microsoft world today.
I totally agree that c++ and CLI languages serve an important role in the .net world, but for 99% of .net developers they will touch neither. And the other languages (F#, ruby.net etc) are used in even smaller numbers. I would totally support additional articles talking about each language (which I am sure there already are), or additional comparison articles, and even a general overview article (perhaps very inline with what you are thinking), but this topic also deserves its platform.
Regarding your recent deletion of the metrics in the adoption section - I would love for better sources, but I have been unable to find them. I believe that the statements as they were, were not in violation of wikipedia's policy of no original research, under the guidelines in the Wikipedia:These_are_not_original_research and Wikipedia:Verifiability articles. The numbers are easy for anyone to reproduce on their own (although they will obviously change over time) and are clearly facts (at any given point in time) there is no opinion, or analysis in the raw numbers. Therefore I am reverting your change. I am open to more discussion on how to better word the poitns, as well as citations (perhaps "citing" the links to the searches directly?)


Gaijin42 (talk) 21:04, 6 December 2007 (UTC)[reply]
The statements are factual and possibly meet verifiability requirements. But, they're being used to show that one language is more widely adopted or has stronger community support than the other, which is a non-trivial deduction and that makes it original research. Having more hits on Google Groups or any search engine is not the same thing as having wider adoption or community support. In fact, its very possible such statistics are misleading.Nimrand (talk) 00:20, 7 December 2007 (UTC)[reply]
I can see that. Lets work on rewording of the "thesis" statements, to better reflect what the bullet points can directly tell us, vs what can be inferred from that. How about this? I think it gets rid of un-sourced conjecture, and replaces the concept of adoption with activity, which I think is much less of a deduction based on the bullets. :
Both C# and VB.Net have high adoption rates, and very active developer communities and Microsoft fully supports both communities. However, C# does have an advantage in terms of the level of community activity on the Internet. Also, there are more books available for C# than VB.Net, and publishers report that C# books significantly outsell the VB.Net counterparts.

Gaijin42 (talk) 15:34, 7 December 2007 (UTC)[reply]

As there has been no response, I am going to make the change suggested above. Gaijin42 (talk) 15:03, 11 December 2007 (UTC)[reply]


Cosiwiki (talk) 11:22, 31 July 2008 (UTC) Generalisations - moved to talk. Cite your sources[reply]

Culture[edit]

While there are some technical differences between the languages, there are also many differences in the cultures of the developers who use them. .NET developers have come from many different programming backgrounds, each having very different coding standards, best practices, etc. Many of these paradigms came from language or IDE features. While the historical reasons for these practices are no longer applicable in all cases, the culture differences remain {{cite}}.

Visual Basic .NET culture[edit]

VB historically was a RAD tool, as well as a tool that was usable by untrained developers, or management. As a result of this wider user base, VB allowed for many shortcuts and ease of use features. These features allowed for the uninitiated to create code, but also contributed to maintenance and debugging issues. Examples of the shortcuts allowed in VB

  • Optional declaration of variables
  • Optional Weak Typing using late binding
  • Optional Parameters

C# culture[edit]

C# developers tend to be prior C/C++ developers, or Java developers. C# is syntactically very similar to C and Java, the IDEs and command line tools work very similarly, and the culture is the same. Also, C# inherited quite a bit of its style and culture from the Delphi/Object Pascal programming language.

Cosiwiki (talk) 11:22, 31 July 2008 (UTC) End Generalisations - moved to talk. Cite your sources[reply]

Instead of moving the section to the talk page, why not find some sources yourself? 12.10.248.51 (talk) 19:23, 1 October 2008 (UTC)[reply]

Pointless Section?[edit]

Does anyone else think the "Features common to all .Net languages" section is pointless? Is that section trying to say anything more specific than "see .NET Framework"?

Thejoshwolfe (talk) 09:26, 18 August 2008 (UTC)[reply]

C# uses the same operator for addition and string concatenation[edit]

In Criticisms of VB.NET not applicable to C#, it is stated that:

  • Assigning and comparing variables uses the same token, =. Whereas C# has separate tokens, == for comparison and = to assign a value.

Along the same lines, would it be relevant to include a statement in Criticisms of C# not applicable to VB.NET similar to the aforementioned item?

  • Addition and string concatenation use the same token, +. Whereas VB.NET has separate tokens, + for addition, and & for concatenation.

It is mentioned as a common pitfall in CSharp for Programmers By Paul J. Deitel (pg. 204, Fig 7.3)

They both pertain to the same issue of reusing operators for very different operations. I suggest that either the VB.NET point is removed or that the C# point be added (depending on if it's established that reusing operators is a syntactical disadvantage), as it's not NPOV to include one or the other when both suffer from the same issue. I will most likely add the point to the C# section in a few days if no one has any problems with it, so please feel free to discuss here, thanks! --64.9.97.44 (talk) 16:10, 29 December 2008 (UTC)[reply]

Historical comparisons[edit]

There are quite a few comparisons in the article that are specifically about .net 1.0 etc (even called out as such in the article). I do not feel that this type of comparison adds much value, as this is not a "history of the comparison of" article, or just a "history of" article. If no significant objects are raised, I will remove those bits, (maybe keeping 2008 and above?) Gaijin42 (talk) 14:36, 24 October 2011 (UTC)[reply]

What about the semi-colon?[edit]

These two scripts are the same, except for one thing:

Console.WriteLine("Hello World!");
Console.WriteLine("Hello World!")

No semi-colon (;). Should that be mentioned? — Preceding unsigned comment added by Alexkill51 (talkcontribs) 14:23, 13 April 2012 (UTC)[reply]

C evolved into c++?[edit]

This article is very poorly written and perhaps should be removed. I think many would dispute that c++ is a continuation of C. — Preceding unsigned comment added by 139.62.86.11 (talk) 07:11, 28 February 2014 (UTC)[reply]

VB has keyword "until"[edit]

in Visual Basic.NET there is the additional keyword: "until". It can be used instead of keyword "while", but with the condition will be changed to the opposite. (Sorry for bad English!)

until: Repeats the loop until the condition is True

while: Repeats the loop while the condition is True (or until the condition is False)

for example:

do until x = True
    some code
loop

brings the same results as:

do while x = False
    some code
loop



2003:6C:CA11:ED84:68BE:E2D4:3F36:A933 (talk) 22:06, 30 November 2015 (UTC)Ralf[reply]

External links modified[edit]

Hello fellow Wikipedians,

I have just modified 2 external links on Comparison of C Sharp and Visual Basic .NET. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

This message was posted before February 2018. After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than regular verification using the archive tool instructions below. Editors have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the RfC before doing mass systematic removals. This message is updated dynamically through the template {{source check}} (last update: 18 January 2022).

  • If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
  • If you found an error with any archives or the URLs themselves, you can fix them with this tool.

Cheers.—InternetArchiveBot (Report bug) 16:15, 11 August 2017 (UTC)[reply]

Move discussion in progress[edit]

There is a move discussion in progress on Talk:C Sharp (programming language) which affects this page. Please participate on that page and not in this talk page section. Thank you. —RMCD bot 21:35, 23 August 2018 (UTC)[reply]