473,883 Members | 1,841 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

C# or VB.NET?

Hi,

I am a beginner in .NET. I have been coding in plain asp before, using
VBScript, and now when i'm migrating to .NET, i obviously chosed VB.NET.

But.... when i see code samples on net, they are mostly in C#, i also saw a
post in this newsgroup where someone mentioned that it was a very "heated
topic back in 2002 about VB.NET vs C#".

So, my question is... what was the result of that topic?
What is best to go for, VB.NET or C#? and why?

Thanks and regards

Jan 10 '08
47 2237
"CMoya" <mo*@nospam.com wrote in message
news:OJ******** ******@TK2MSFTN GP06.phx.gbl...
"Mark Rae [MVP]" <ma**@markNOSPA Mrae.netwrote in message
news:uf******** ******@TK2MSFTN GP03.phx.gbl...
>"CMoya" <mo*@nospam.com wrote in message
news:F0******* *************** ************@mi crosoft.com...
>>Please explain.

http://msdn2.microsoft.com/en-us/vcsharp/aa336816.aspx
Near the bottom...

Ah. I see. You just copy and pasted.... verbatim.
Not quite... :-)
That doesn't explain what the "new language syntax" means. Do you know
what that post means and thus why you don't like it? I sure don't.
I don't like the 'with' syntax because I don't find it particularly readable
or intuitive - but that's just my opinion. On a different syntactical
subject, I like placing the opening curly bracket on a new line as opposed
to the end of the previous line - again, that's just a preference.

But back to the plot; the C# team felt that a 'with' statement would add
little, if anything, to improve the language so didn't include it,
especially since it's extremely easy to simulate it if you absolutely must,
e.g.

OpenFileDialog dlgOpen = new OpenFileDialog
{
AddExtension = true,
CheckFileExists = true,
CheckPathExists = true,
DefaultExt = ".bmp"
};

See here
http://forums.microsoft.com/MSDN/Sho...62686&SiteID=1 for
more on this and, yes, that's where I lifted the above snippet from... :-)
--
Mark Rae
ASP.NET MVP
http://www.markrae.net

Jan 10 '08 #31
"Just cos you can doesn't mean you should" implies there's something wrong
with the function
What would you rather do? Call "string.Len gth" or call "len (string)" that
then calls "string.Len gth" internally? And I don't know how the len
function handles nulls cos I didn't write it and haven't seen the source.
However I know how myString.Length will react if myString is null and I
don't need trial and error or consulting docs to tell me.

Using those functions also makes it harder to understand c# examples. If
you at least use vb.net as intended then reading c# shouldn't be too much
problem, and switching to c# if you want to should be easier.
Jan 11 '08 #32
What I'm getting at is that to convert VB to vb.net every line like;

if len(myString) 100 then
myString = mid(myString, 1, 50)
end if

would need to be changed to

if myString.Length 100 then
myString = myString.Substr ing(1, 50)

etc

So by creating len, mid etc functions, the VB code still works with very
little change.

"CMoya" <mo*@nospam.com wrote in message
news:DE******** *************** ***********@mic rosoft.com...
That's wrong. The VisualBasic.dll library (where those functions reside)
is not the same as the VB Compatibility Library (that has truly deprecated
things like old VB.Classic control arrays). Stuff in the Visual Basic.dll
library are fully supported, and completely rewritten stuff.... along with
new stuff like the very handy "My" namespace, which resides in the same
library with Left/Right/Mid.

--
-C. Moya
http://www.cmoya.com

"Aidy" <ai**@xxnoemail xx.comwrote in message
news:5a******** *************** *******@bt.com. ..
>>But, this is just one of example of VB's "moreness" and robustness
compared to C#. :)

My understanding is that those functions are there for the VB->VB.NET
conversion utility, and also so that VB programmers can use vb.net
without having to change their coding syntax, style or methods.

Just cos you can doesn't mean you should.


Jan 11 '08 #33
Perhaps in pure syntax alone (though the common switch statement alone
belies that assertion), I agree mostly. But you do have to code *more* to
achieve the same functionality in C#. There is no equivalent to the
intelligent CType for instance (other than littering your code with
conditionals to cover it's functionality).
It might help if you provide some examples, but writing strongly typed code
is usually seen as a good thing. It removes ambiguity and the possibility
for bugs. VB does give you more leeway but that doesn't make it good. For
example VB can do this, but is it good?

dim x as variant
x = 123
x = "Hello World"

Of course it's not good. If one object can be converted to another type
then it's usually possible in C# too, just with different syntax.
Jan 11 '08 #34

"Aidy" <ai**@xxnoemail xx.comwrote in message
news:k-*************** *************** @bt.com...
>"Just cos you can doesn't mean you should" implies there's something
wrong with the function

What would you rather do? Call "string.Len gth" or call "len (string)"
that then calls "string.Len gth" internally? And I don't know how the len
function handles nulls cos I didn't write it and haven't seen the source.
However I know how myString.Length will react if myString is null and I
don't need trial and error or consulting docs to tell me.
I'd rather call Len(str) than do the following in a bunch of places in code:

if (str != null) {
num = str.Length()
}
else {
// do something else. in this case assign: num = 0
}
//(Even worse if I want to duplicate Left/Mid/Right)

What's wrong with calling a reusable Len() "utility" function that does the
same thing as the conditionals above?
>
Using those functions also makes it harder to understand c# examples. If
you at least use vb.net as intended then reading c# shouldn't be too much
problem, and switching to c# if you want to should be easier.
Is it any different than using utility functions written by other
developers in your team or written by developers employed before you joined
the team... or worse, copy and pasted from the web? Do all C# developers
work alone and bring their redundant encapsulated utility functions to a
project? What a nightmare (that I've personally seen.... at least back in
the day VB coders did this a lot with API vodoo calls-- but C# guys do it
for the most rudimentary things). These built-in utility (standard)
functions are designed to make your life easier and manage projects
easier.... the goal of all high-end computer languages. Except perhaps C#? I
dunno.

--
-C. Moya
http://www.cmoya.com

Jan 11 '08 #35
"Aidy" <ai**@xxnoemail xx.comwrote in message
news:xe******** *************** *******@bt.com. ..
>Perhaps in pure syntax alone (though the common switch statement alone
belies that assertion), I agree mostly. But you do have to code *more* to
achieve the same functionality in C#. There is no equivalent to the
intelligent CType for instance (other than littering your code with
conditionals to cover it's functionality).

It might help if you provide some examples, but writing strongly typed
code is usually seen as a good thing. It removes ambiguity and the
possibility for bugs. VB does give you more leeway but that doesn't make
it good. For example VB can do this, but is it good?

dim x as variant
x = 123
x = "Hello World"

Of course it's not good. If one object can be converted to another type
then it's usually possible in C# too, just with different syntax.
VB.NET does not support the Variant data type. Perhaps you meant "Object"
type. Which, BTW, C# allows just fine too.
>
Jan 11 '08 #36
I'd rather call Len(str) than do the following in a bunch of places in
code:
So you'd rather your code was vague rather than explicit? What happens
when, in "version x", Microsoft change the way Len is written and you need
to handle your own nulls? If you find you do that code a lot, then write
your own Len function and use it.
These built-in utility (standard) functions are designed to make your life
easier and manage projects easier.... the goal of all high-end computer
languages. Except perhaps C#? I dunno.
Fair point. My goal isn't to make things "easier" in terms of coding or
management. My goal is to write tight, explicit, strongly typed code that
is easy to extend, re-use and has a lower chance of introducing bugs. If I
need to put a little extra effort in to do that then so be it.
Jan 11 '08 #37
"Aidy" <ai**@xxnoemail xx.comwrote in message
news:xe******** *************** *******@bt.com. ..
dim x as variant
x = 123
x = "Hello World"
That's actually not valid VB.NET... In VS.NET 2008, if you type or paste the
above code IntelliSense will change Variant to Object. At that level,
there's no difference between the above and:

object x = new object();
x = 123;
x = "Hello World";
--
Mark Rae
ASP.NET MVP
http://www.markrae.net

Jan 11 '08 #38


--
-C. Moya
http://www.cmoya.com

"Aidy" <ai**@xxnoemail xx.comwrote in message
news:1s******** *************** *******@bt.com. ..
>I'd rather call Len(str) than do the following in a bunch of places in
code:

So you'd rather your code was vague rather than explicit? What happens
when, in "version x", Microsoft change the way Len is written and you need
to handle your own nulls? If you find you do that code a lot, then write
your own Len function and use it.
The Len utility function hasn't changed in over 25 years. It's intrinsic.
It's like expecting the ++ operator to change in C. I don't see C# guys
writing var = var + 1 wrapper functions to replace ++.
>
>These built-in utility (standard) functions are designed to make your
life easier and manage projects easier.... the goal of all high-end
computer languages. Except perhaps C#? I dunno.

Fair point. My goal isn't to make things "easier" in terms of coding or
management. My goal is to write tight, explicit, strongly typed code that
is easy to extend, re-use and has a lower chance of introducing bugs. If
I need to put a little extra effort in to do that then so be it.
And as a manager, it's my job to make sure that my developers aren't wasting
time reinventing the wheel.... duplicating code, violating the basic tenets
of encapsulation, and neglecting to use tried and true functions. Whether
they're written by other developers in my team or put into the VB runtime by
the VB.NET team.

>
Jan 11 '08 #39
And as a manager, it's my job to make sure that my developers aren't
wasting time reinventing the wheel.... duplicating code, violating the
basic tenets of encapsulation, and neglecting to use tried and true
functions. Whether they're written by other developers in my team or put
into the VB runtime by the VB.NET team.
Yes, but loosely typed and coupled code may speed up development but you
lose in the long-run on bug fixing and future updates.
Jan 11 '08 #40

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
11266
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL) on the server because of that. Our site will have an SSL certificate next week, so I would like to use AIM instead of SIM, however, I don't know how to send data via POST over https and recieve data from the Authorize.net server over an https...
2
5865
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues to execute the code until the browser send his reply to the header instruction. So an exit(); after each redirection won't hurt at all
3
23053
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which field is completed.
0
8508
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. 354 roberto@ausone:Build/php-4.3.2> ldd /opt/php4/bin/php libsablot.so.0 => /usr/local/lib/libsablot.so.0 libstdc++.so.5 => /usr/local/lib/libstdc++.so.5 libm.so.1 => /usr/lib/libm.so.1
1
8621
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the column below. The viewer can select states from the drop down lists above the other two columns as well. If the viewer selects only one, only one column fills. If the viewer selects two states, two columns fill. Etc. I could, if appropriate, have...
4
18317
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the user comes back to a page where he had a submitted POST data the browser keeps telling that the data has expired and asks if repost. How to avoid that? I tried registering all POST and GET vars as SESSION vars but
1
6890
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url http://www.mis.gla.ac.uk/biquery/training/ but each of the courses held have maximum of 8 people that could be
2
31461
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value to :parameter I dont like the idea of making the SQL statement on the fly without binding parameters as I dont want a highly polluted SQL cache.
3
23617
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the results of the picture half the size. The PHP I have installed support 1.62 or higher. And all I would like to do is take and image and make it fit a 3x3. Any suggestions to where I should read or look would be appreciated.
0
11153
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10860
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9583
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
7134
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5804
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
6002
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4620
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
4225
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3239
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.