C# 与 VB.NET 对比
C# 与 VB.NET 对比
2008-06-20 15:30 by Anders Cui, 1462 阅读, 3 评论, 收藏, 编辑
2.15Constructors / Destructors
1.0 Introduction
1.1 Purpose & Scope
This document is to compare the syntax between the VB.Net and C#.Net for various coding concepts.
2.0 Comparison
2.1 Program Structure
VB.NET |
C#.NET |
Imports System Namespace Hello 'See if an argument was passed from the command line Console.WriteLine("Hello, " & name & "!") |
using System; namespace Hello { // See if an argument was passed from the command line Console.WriteLine("Hello, " + name + "!"); |
2.2 Comments
VB.NET |
C#.NET |
' Single line only |
// Single line |
2.3 Data Types
VB.NET |
C#.NET |
Value Types Reference Types Initializing Type Information Type Conversion |
Value Types Reference Types Initializing object person = null; Type Information Type Conversion |
2.4 Constants
VB.NET |
C#.NET |
Const MAX_STUDENTS As Integer = 25 ' Can set to a const or var; may be initialized in a constructor |
const int MAX_STUDENTS = 25; // Can set to a const or var; may be initialized in a constructor |
2.5 Enumerations
VB.NET |
C#.NET |
Enum Action Enum Status Console.WriteLine(Status.Pass) ' Prints 70 |
enum Action {Start, Stop, Rewind, Forward}; Action a = Action.Stop; Console.WriteLine((int) Status.Pass); // Prints 70 |
2.6 Operators
VB.NET |
C#.NET |
Comparison Arithmetic Assignment Bitwise Logical Note: AndAlso and OrElse perform short-circuit logical evaluations String Concatenation |
Comparison Arithmetic Assignment Bitwise Logical Note: && and || perform short-circuit logical evaluations String Concatenation |
2.7 Choices
VB.NET |
C#.NET |
greeting = IIf(age < 20, "What's up?", "Hello") ' One line doesn't require "End If" ' Use : to put two commands on same line ' Preferred ' To break up any long single line use _ 'If x > 5 Then Select Case color ' Must be a primitive data type |
greeting = age < 20 ? "What's up?" : "Hello"; if (age < 20) // Multiple statements must be enclosed in {} No need for _ or : since ; is used to terminate each statement. if (x > 5) // Every case must end with break or goto case |
2.8 Loops
VB.NET |
C#.NET |
||||||
Pre-test Loops:
Post-test Loops:
' Array or collection looping ' Breaking out of loops ' Continue to next iteration |
Pre-test Loops: // no "until" keyword for (c = 2; c <= 10; c += 2) Post-test Loop: do // Array or collection looping // Breaking out of loops // Continue to next iteration |
2.9 Arrays
VB.NET |
C#.NET |
Dim nums() As Integer = {1, 2, 3} ' 4 is the index of the last element, so it holds 5 elements ' Resize the array, keeping the existing values (Preserve is optional) Dim twoD(rows-1, cols-1) As Single Dim jagged()() As Integer = { _ |
int[] nums = {1, 2, 3}; // 5 is the size of the array // C# can't dynamically resize an array. Just copy into new array. float[,] twoD = new float[rows, cols]; int[][] jagged = new int[3][] { |
2.10 Functions
VB.NET |
C#.NET |
' Pass by value (in, default), reference (in/out), and reference (out) Dim a = 1, b = 1, c As Integer ' c set to zero by default ' Accept variable number of arguments Dim total As Integer = Sum(4, 3, 2, 1) ' returns 10 ' Optional parameters must be listed last and must have a default value SayHello("Strangelove", "Dr.") |
// Pass by value (in, default), reference (in/out), and reference (out) int a = 1, b = 1, c; // c doesn't need initializing // Accept variable number of arguments int total = Sum(4, 3, 2, 1); // returns 10 /* C# doesn't support optional arguments/parameters. Just create two different versions of the same function. */ void SayHello(string name) { |
2.11 Strings
VB.NET |
C#.NET |
Special character constants ' String concatenation (use & or +) ' Chars ' No string literal operator ' String comparison Console.WriteLine(mascot.Substring(2, 3)) ' Prints "son" ' String matching Imports System.Text.RegularExpressions ' More powerful than Like ' My birthday: Oct 12, 1973 ' Mutable string |
Escape sequences // String concatenation // Chars // String literal // String comparison Console.WriteLine(mascot.Substring(2, 3)); // Prints "son" // String matching using System.Text.RegularExpressions; // My birthday: Oct 12, 1973 // Mutable string |
2.12 Exception Handling
VB.NET |
C#.NET |
' Throw an exception ' Catch an exception ' Deprecated unstructured error handling |
// Throw an exception // Catch an exception |
2.13 Namespaces
VB.NET |
C#.NET |
Namespace Harding.Compsci.Graphics ' or Namespace Harding Imports Harding.Compsci.Graphics |
namespace Harding.Compsci.Graphics { // or namespace Harding { using Harding.Compsci.Graphics; |
2.14 Classes / Interfaces
VB.NET |
C#.NET |
Accessibility keywords ' Inheritance ' Interface definition // Extending an interface // Interface implementation |
Accessibility keywords // Inheritance
// Extending an interface
|
2.15 Constructors / Destructors
VB.NET |
C#.NET |
Class SuperHero Public Sub New() Public Sub New(ByVal powerLevel As Integer) Protected Overrides Sub Finalize() |
class SuperHero { public SuperHero() { public SuperHero(int powerLevel) { ~SuperHero() { |
2.16 Using Objects
VB.NET |
C#.NET |
Dim hero As SuperHero = New SuperHero With hero hero.Defend("Laura Jones") Dim hero2 As SuperHero = hero ' Both reference the same object hero = Nothing ' Free the object If hero IsNothing Then _ Dim obj As Object = New SuperHero ' Mark object for quick disposal |
SuperHero hero = new SuperHero(); // No "With" construct hero.Defend("Laura Jones"); SuperHero hero2 = hero; // Both reference the same object hero = null ; // Free the object if (hero == null) Object obj = new SuperHero(); // Mark object for quick disposal |
2.17 Structs
VB.NET |
C#.NET |
Structure StudentRecord Public Sub New(ByVal name As String, ByVal gpa As Single) Dim stu As StudentRecord = New StudentRecord("Bob", 3.5) stu2.name = "Sue" |
struct StudentRecord { public StudentRecord(string name, float gpa) { StudentRecord stu = new StudentRecord("Bob", 3.5f); stu2.name = "Sue"; |
2.18 Properties
VB.NET |
C#.NET |
Private _size As Integer Public Property Size() As Integer foo.Size += 1 |
private int _size; public int Size { foo.Size++; |
2.19 Delegates / Events
VB.NET |
C#.NET |
Delegate Sub MsgArrivedEventHandler(ByVal message As String) Event MsgArrivedEvent As MsgArrivedEventHandler ' or to define an event which declares a delegate implicitly AddHandler MsgArrivedEvent, AddressOfMy_MsgArrivedCallback Imports System.Windows.Forms Dim WithEvents MyButton As Button ' WithEvents can't be used on local variable Private Sub MyButton_Click(ByVal sender As System.Object, _ |
delegate void MsgArrivedEventHandler(string message); event MsgArrivedEventHandler MsgArrivedEvent; // Delegates must be used with events in C# MsgArrivedEvent += new MsgArrivedEventHandler(My_MsgArrivedEventCallback); using System.Windows.Forms; Button MyButton = new Button(); private void MyButton_Click(object sender, System.EventArgs e) { |
2.20 Console I/O
VB.NET |
C#.NET |
Console.Write("What's your name? ") Dim c As Integer |
Console.Write("What's your name? "); int c = Console.Read(); // Read single char |
2.21 File I/O
VB.NET |
C#.NET |
Imports System.IO ' Write out to text file ' Read all lines from text file ' Write out to binary file ' Read from binary file |
using System.IO; // Write out to text file // Read all lines from text file // Write out to binary file // Read from binary file |
C# 与 VB.NET 对比的更多相关文章
- ViewBag & ViewData
ViewBag 和ViewData 是ASP.NET MVC 开发当中大家使用很多的传递数据的方法 VB可以称为VD的一块语法糖, VB是使用C# 4.0动态特征, 使得VD也具有动态特性. 下面就是 ...
- VB6.0 和VB.NET 函数对比
VB6.0和VB.Net的对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1 ...
- C#跨平台手机应用开发工具Xamarin尝试 与Eclipse简单对比
Xamarin 支持使用C#开发基于Android.IOS.WindowsPhone应用开发,最大特点C#+跨平台,详细说明问度娘. 安装 研究 想体验研究的点击查看页面 Xamarin For Vi ...
- [VB] if 判断语句 和 If、IIf函数的比较
Module Module1 Sub Main() Dim s1 As String = "我是真的" Dim s2 As String = "我不是真的" D ...
- vb小程序浅析
系统 : Windows xp 程序 : BJCM10B 程序下载地址 :http://pan.baidu.com/s/1dFyXe29 要求 : 编写注册机 使用工具 : OD 可在看雪论坛中查找关 ...
- 【应用笔记】【AN004】VB环境下基于RS-485的4-20mA电流采集
版本:第一版作者:周新稳 杨帅 日期:20160226 =========================== 本资料高清PDF 下载: http://pan.baidu.com/s/1c1uuhLQ ...
- VB6中的引用传递 与 VB.NET中的引用传递的区别
首先注意一点,在VB6中缺省参数传递的方式是:引用传递,而在VB.NET中缺省参数传递的方式是:值传递. 然后我们看下面VB6中的引用传递与VB.NET中的引用传递的对比. VB6中的引用传递 Pri ...
- 【VB超简单入门】二、知识准备
在开始编程之前,需要先熟悉一下各种操作和术语,以后学习编程才能得心应手. 首先最重要的操作当然就是-电脑的开机关机啦~(开个玩笑哈哈),必须掌握软件的安装和卸载,还有能编写批处理程序对平时的使用也是很 ...
- ORM框架-VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.5
摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)[ECG]是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于OO.ADO.N ...
随机推荐
- hdu 5621 KK's Point(数学,推理题)
题解: 在圆上点三个点时,除圆上三个交点外,圆内没有交点:在圆上点四个点时,除圆上四个交点外,圆内出现了一个交点,因此,在N个点中每四个点便可以在圆内产生一个交点,因此N个点在圆内形成的点的个数为CN ...
- ER 和 数据库关系模式
http://lianghuanyue123.blog.163.com/blog/static/130423244201162011850600/ 我们眼下所接触的数据库基本上是关系数据库,关系数据库 ...
- css绝对定位、相对定位和文档流的那些事
前言 接触html.和css时间也不短了,但每次用div+css布局的时候心里还是有点儿虚,有时候干脆就直接用table算了,很多时候用div会出现些不可预料的问题,虽然花费一定时间能够解决,但总不是 ...
- csss3 2D转换
CSS3 转换 通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 它如何工作? 转换是使元素改变形状.尺寸和位置的一种效果. 您可以使用 2D 或 3D 转换来转换您的元素. 浏 ...
- AjaxHelper学习,ajax,microsoft,mvc,asp.net
index.cshtml @using (Ajax.BeginForm("ContentAjax", new AjaxOptions { UpdateTargetId = &quo ...
- 简单的javascript实例一(时钟特效)
方便以后copy 时钟特效 <html> <head> <meta http-equiv="Content-Type" content="t ...
- UIButton 头文件常见属性和方法
UIButton头文件常见属性 1.属性 contentEdgeInsets: default is UIEdgeInsetsZero.设置内容四边距,默认边距为0 @property(nonatom ...
- Windows中的句柄
(一)句柄 在程序设计中,句柄(handle)是一种特殊的智能指针.当一个应用程序要引用其他系统(如数据库.操作系统)所管理的内存块或对象时,就要使用句柄. 句柄与普通指针的区别在于,指针包含的是引用 ...
- Python 入门之常见小问题
1.在终端运行python,出现>>>即可输入代码回车进行执行,如果要退出,只需要执行exit()即可. -->在Python交互式命令行下,可以直接输入代码,然后执行,并立刻 ...
- Android_实现静默安装和卸载应用
转:http://www.cnblogs.com/ondream/archive/2012/04/13/2446138.html 前段时间做了一个批量安装卸载应用程序的小应用,由于安装卸载应用程序的部 ...