Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> C#/.Net  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701992
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何从VBA过渡到C#

作者:cg1  摘自:access911.net  :cg1  更新日期:2006-7-8  浏览人次:

 

作为一个 VBA 开发者如何过渡到 C# 开发?


学 VB.NET 更快
首先,必须承认的是 VBA 过渡到 VB.NET 的速度绝对要比 VBA 过渡到 C# 要快,因为基本的语法无需再另外学习。
本篇文章却希望与立志于 VBA->C# 的网友共享。因此本文也有一个假设,读者必定是非常熟悉 VBA 开发,本文的讲述一切从 VBA 出发。

《C#语言规范》不算好
学习新的编程语言首先要知道语言规范,在 VS.NET 2005 安装后却无法在《Microsoft Visual Studio 2005 文档》(以下简称《文档》)中找到详细的《C#语言规范》。默认情况下 "盘符:\Program Files\Microsoft Visual Studio 8\VC#\Specifications\2052\C# Language Specification 1.2.doc" 中有《C#语言规范》。但是在阅读过部分后发现《C#语言规范》后对生手学习 C# 语言帮助不大,建议在无法读懂 DOC 文档时只要总结几个关键字,然后到《文档》的索引中去查看该关键字的详细信息和示例即可。
一个小提示:目录中有页码,按 CTRL + G 可以直接转道指定页。

C# 区分大小写
“C# 区分大小写”,虽然只有一句话,但是仍然是很多 VBA 开发者所不很习惯的

"C????"类转换函数没了
VB 中的 CCur CStr CDbl 等函数在 C# 中不存在了,但是在 C# 中需要转换数据类型的地方更加多,可以用
Convert.ToDouble(需要转换的变量名);
Convert.ToChar(需要转换的变量名);

或者
(类型)变量名;
(Double)字符串变量名;


这样的语法来进行转换

暂时还是用 ADO:


引用 ADO 类后在 C# 中编程时仍然可以和 VBA 中一样调用 ADO 的方法、属性、对象。其最终实现方法我们并不关心,我们只关心在转换初期我们仍然可以使用我们熟悉的方法进行编程。而且提示大家一点,ADO.NET 虽然好,但是对 MDB 数据库结构的一些修改还是要使用 COM 的 ADOX 来进行操作, ADO.NET 并不能胜任全部工作。
记得,ADO.NET 开发还是要尽快学的。

 

C# 不支持可选参数:


在编写自己的程序时倒是没什么关系,写一个重载就可以了,比如:
private string DoStep(string Para1,string OptionalPara2)
{
    // 过程代码
    return(true);
}
private string DoStep(string Para1)
{
    // 直接调用上一次定义
    return(DoStep("p1",true));
}

但是在调用 EXCEL 这样的 COM 库时就有问题了,只能不断地重复写 System.Type.Missing 来补齐所有可选参数,具体的请看这里:
    如何解决C#因无“可选参数”导致EXCEL开发困难?《C#/VS.NET2005》
    http://access911.net/index.asp?u1=a&u2=72FABE1E12DCE9F3

在用过多个开发工具和语言后个人觉得其实无需让开发语言去实现它不擅长的功能,像上述调用 EXCEL 的功能完全可以用 VB.NET 撰写,然后生成一个 DLL 直接在 C# 中调用就可以了,反正都是基于 .NET RUNTIME 的,性能上不会有很大的差别。

2012年新编辑。注意,在.NET Framework 3.5的时候C#已经有可选参数了(可能更前面几个版本就有了。)。

 

Debug.Print 结果在“输出”窗口中显示:

Debug.Print 结果在“输出”窗口中显示,而不是VBA的“立即(即时)”窗口。输出窗口用 Ctrl + W 或者 菜单 视图 输出 打开

2012年新编辑。注意,在vs2010中输出的窗口是可以通过设置调整的。(可能更前面几个版本就有了。)。

 

c#如何声明公共变量:

用 public static 声明某个类的变量即可,用 类.变量名 可以访问,如果不想写类名可以在其他的类里面先 using 类名
namespace WindowsApplication1
{
    class clsComm
    {
        //公共变量,访问方式为:
        //clsComm.sAppName = "dasdfasdf";
        // if (clsComm.sAppName=="asdfasdfasdf") {.....}
        public static string sAppName;

        //公共常量
        public const string sAppTitle = "ddddd";
    }
}


 


在对浮点数值赋值时必须加个F:


在对浮点数值赋值时必须加个F,以表示这个是浮点数字,否则会被当作 double 来处理,类似VBA中的 &H1A 16进制表示
private void showFloatValue()
{
    float var;
    var = 0.42F;       //注意这里
    value.Text = "0.42F";
}

 

取模(取余数)用 %:


VBA 中用 x Mod y 来取模,c# 中用 x % y 来取模(取余数)

 

i = i + 1 现在用  i++ 或者 ++i 来表示,i = i + a 现在用 i += a 来表示:


i = i + 1 现在用  i++ 或者 ++i 来表示,i = i + a 现在用 i += a 来表示
vb代码:i = i + 1 
c#代码: i++ 或者 ++i 来表示
vb代码:i = i - 1 
c#代码: i-- 或者 --i 来表示

x++ 生成的值是递增发生之前的 x 值,而 ++x 生成的值是递增发生之后的 x 值,例子请参考:
int x
x = 42;
Console.WriteLine(x++);    // x现在等于43,输出的是42
x = 42;
Console.WriteLine(++x);    // x现在等于43,输出的是43

 


每天写一点,未完待续。。。

本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利