Celebrity Deathmatch (VB.NET vs C#)
-
Which ain't the same thing.
Ah. Right you are.
-
PIEBALDconsult wrote:
Would you double-check that link? I saw nothing related to your arguments there (using Chrome 10 on Fedora Linux).
PIEBALDconsult wrote:
Plus, using more symbols and fewer keywords makes C somewhat less Anglo-centric.
Meh, as a Cyrillic-writing Serbian I'll take Anglo-centric any time over cryptic symbols. In fact, my ideal language would have no operators at all - not even mathematical ones.
Nemanja Trifunovic wrote:
my ideal language would have no operators at all - not even mathematical ones
-
PIEBALDconsult wrote:
Would you double-check that link? I saw nothing related to your arguments there (using Chrome 10 on Fedora Linux).
PIEBALDconsult wrote:
Plus, using more symbols and fewer keywords makes C somewhat less Anglo-centric.
Meh, as a Cyrillic-writing Serbian I'll take Anglo-centric any time over cryptic symbols. In fact, my ideal language would have no operators at all - not even mathematical ones.
Fixed, thanks.
-
PIEBALDconsult wrote:
in VB to have to change both ends
I forgot about that! I ran into that today, actually. The most annoying one for me is "Function"/"Sub". Why the heck should I have to annotate that difference? They're both methods. Let the bloody compiler figure out if it returns something or not. I find it strange that VB.NET doesn't have "Begin Grouping" and "End Grouping" rather than parentheses. :rolleyes:
PIEBALDconsult wrote:
Plus, using more symbols and fewer keywords makes C somewhat less Anglo-centric.
Good point!
AspDotNetDev wrote:
"Function"/"Sub".
Yeah, and class/module too.
-
this would be a linq version
(from f in new List<Func<bool>>() { Step1, Step2, Step3 } where !f() select 0).FirstOrDefault();
but you are still limited to the same function signature in the vb version it could be
case step1(mystring)
case step2(myint, mystring)
.....modified on Monday, March 28, 2011 6:56 PM
I figured out a shorter version that makes use of LINQ. I posted a tip/trick about it.
-
VB.NET supports by-ref extension methods. As of 4.0, C# does not.
Regards, Nish
Are you addicted to CP? If so, check this out: The Code Project Forum Analyzer : Find out how much of a life you don't have! My technology blog: voidnish.wordpress.com
Well the VB designers got Extension Methods right, the C# designers really screwed up big time. Extension Methods should be by attribute in both languages.
-
Fixed, thanks.
Doesn't look fixed to me. Methinks you need to get the permalink from whatever message you are linking to.
-
AspDotNetDev wrote:
Maybe "End Sub" makes the code easier to read to somebody not initiated with the language, but it doesn't make the code any easier to write
Which is a reasonable trade-off. You write code once and read it many times. Besides, with any decent editor, it is a non-issue.
AspDotNetDev wrote:
if (true)
{I see unnecessary and confusing symbols here. For instance in Go, it would be something like:
if true {
Or (even better) in ML:
if true then
Nemanja Trifunovic wrote:
AspDotNetDev wrote:
if (true)
{If I had my way (and I don't), the braces would be mandatory and the parentheses would be optional.
-
AspDotNetDev wrote:
It is faster to read "{}" than "Then End If",
Kind of.
End If
closes the block afterIf
and that's it. To get what}
does you need to be aware of the scope - sometimes even to scroll up a couple of pages. Sure, a good editor helps, but as far as a language goes I likeEnd If
better.See what happens when you remove all the newlines. Readable?
-
Doesn't look fixed to me. Methinks you need to get the permalink from whatever message you are linking to.
My post "Here's something else VB can't do".
-
My post "Here's something else VB can't do".
-
There hasn't been a good "why language X sucks and language Y is better" thread in a good while, so I thought I'd start one. Unlike most, however, this one has rules. I will post a reason C# is better than VB.NET and somebody reply with a reason VB.NET is better than C#. I (or somebody else) will then reply to that message stating another reason C# is better. And so on. Also, you must show code examples (when appropriate). I'll start. C# Is Less Verbose
Public Sub Something()
' VB.NET...
End Subpublic void Something()
{
// C#...
}You're turn (post why VB.NET is better than C#). :)
VB is better because I use it more often, and have more experience with it than C#. Do I get points for honesty?
-
There hasn't been a good "why language X sucks and language Y is better" thread in a good while, so I thought I'd start one. Unlike most, however, this one has rules. I will post a reason C# is better than VB.NET and somebody reply with a reason VB.NET is better than C#. I (or somebody else) will then reply to that message stating another reason C# is better. And so on. Also, you must show code examples (when appropriate). I'll start. C# Is Less Verbose
Public Sub Something()
' VB.NET...
End Subpublic void Something()
{
// C#...
}You're turn (post why VB.NET is better than C#). :)
AspDotNetDev wrote:
You're turn
Am I? ;P
-
That's pretty neat! But you can actually get pretty close to that in C#:
var steps = new List<Func<bool>> { Step1, Step2, Step3 };
foreach (var step in steps)
{
if (!step()) break;
}And if you create this helper function:
void DoEach(params Func<bool>[] steps)
{
foreach (var step in steps)
{
if (!step()) break;
}
}You can shorten that code even further:
DoEach(new Func<bool>[] {
Step1,
Step2,
Step3
});Got to love delegate inference! Not sure, but I think there's something in LINQ that does something like this as well. Can't be bothered to try and find it now though.
-
Oh sorry, it's so well known that I didn't think you'd need code to back it up :-) See this blog post: http://blog.gadodia.net/extension-methods-in-vbnet-and-c/[^]
Regards, Nish
Are you addicted to CP? If so, check this out: The Code Project Forum Analyzer : Find out how much of a life you don't have! My technology blog: voidnish.wordpress.com
Nishant Sivakumar wrote:
Oh sorry, it's so well known that I didn't think you'd need code to back it up
maybe in your part of the world - I've been using C# and VB for years but never came across this. Why you'd want to do it in a well designed program is questionable, but maybe there is a good reason somewhere.
-
I'll give an example reply as well... VB.NET is Backward Compatible with VB6
On Error GoTo ErrorHandler Throw New Exception("Error!") Return
ErrorHandler:
MessageBox.Show("Darn!")C# does not have this handy backward compatibility, so upgrading from VB6 is more difficult when going to C#.
AspDotNetDev wrote:
VB.NET is Backward Compatible with VB6
And this is supposed to be a good thing? ;P Though I will give you props for actually using an ErrorHandler and not simply going with On Error Resume Next like my predecessor did.
-
AspDotNetDev wrote:
You're turn
Am I? ;P
-
AspDotNetDev wrote:
You're turn
Am I? ;P
-
The VB Select-Case is more flexible than just that. Example from MSDN:
Dim number As Integer = 8
Select Case number
Case 1 To 5
Debug.WriteLine("Between 1 and 5, inclusive")
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8
Debug.WriteLine("Between 6 and 8, inclusive")
Case 9 To 10
Debug.WriteLine("Equal to 9 or 10")
Case Else
Debug.WriteLine("Not between 1 and 10, inclusive")
End SelectRegards, Nish
Are you addicted to CP? If so, check this out: The Code Project Forum Analyzer : Find out how much of a life you don't have! My technology blog: voidnish.wordpress.com
In C# you can use fall through cases for that in C#.
-
AspDotNetDev wrote:
You're turn
Am I? ;P
Again. if a=b { do something } What's unclear here ? However, the compiler stops me with the question - do you want to assign b to a ? No, I don't. Isn't it obvious what I want to do ? VB doesn't need this handholding. Also, why do I need to type if (a=b) { do something } and what do those fing paranthesis do there ? If I wanted to better delimit the clauses, for human eyes benefit only, I would do that, as in, say, if ((a=b) && (c=d)) { } Also... operators. I really don't care how awkwardly they were named in C, C++, etc, but really, people, baggage should NOT be carried forward && instead of AND ? || instead of OR ? != instead of <> ! instead of NOT ? No, really, what am I ? A compiler ? My hands won't fall off if I type (cond1) AND (cond2) instead of (cond1) && (cond2). There's one extra character and it's so much clearer ! Why do so many people love cryptic code ? It's not like the writer of that code will seem to be any smarter ! Also, the compiler stops and hits me with a brick saying that in the line variable1 = "abc" variable2 = 5; I have missed the ending ; on the first line. Well... if you compiler are so sure about my missing of that fing semicolon, why don't you put it there ? Warn me, color it bright red, make it blink, but put it there if you are so sure I've missed it. Help me a bit. I write in C#, and I really like it, don't get me wrong. But that doesn't make me not see these (and others) things.