【机房合作总结篇】——vb.net版机房与C#版对比

前言

       拖拖拉拉,机房合作的代码编写阶段总算是完成了,因为机房合作是用C#语言编写的,而不是我们熟悉的vb.net编写,所以从中就遇到很多困难,整个代码的编写过程中,我们上网查了很多资料,我觉得应该把这些小知识点,顺便和vb.net版 的机房拿出来比较,就当时在比较中学习,颗粒归仓。


一、引用

       vb.net的引用和C#里的引用有相同也有不同,VB.net直接在解决方案资源管理器引用就可以了。可是C#里不仅要在解决方案资源管理器里添加引用,还要在代码里添加引用

<span style="font-size:18px;color:#333333;">using System.Windows.Forms;
using System.Net;
using BLL;
using Facade;
using Entity;</span>


二、实例化

      在我们的机房收费系统中,每一个模块都用到实例化,实例化B层的某个类, 实例化某个实体等等,刚开始敲代码的时候还真的不清楚再C#中不知道怎么实例化。

VB.net里我们是这样实例化的

<span style="font-size:18px;color:#333333;"><span style="white-space:pre">	</span>Dim card As New Model.RechargeEntity
        Dim cardBLL As New BLL.RechargeBLL
        Dim dt As New DataTable</span>

而C#里是这样的

<span style="font-size:18px;color:#333333;"> <span style="white-space:pre">	</span>cardBLL cb = new cardBLL();
        CardEntity cardEntity = new CardEntity();
        List<CardEntity> rs;
        BasicBLL bb = new BasicBLL();
        BasicDataEntity bde = new BasicDataEntity();
        List<BasicDataEntity> basicdataEntity;</span>

所以,很不一样吧,所以觉得困难时很正常的。


三、方法的编写

VB里方法的编写是这样的

<span style="font-size:18px;color:#333333;">Public Function selectdata(data As BasicEntity) As DataTable Implements IbasicData.selectdata
        </span>
<span style="font-size:18px;color:#333333;"> End Function</span>
C#里是这样的

<span style="font-size:18px;color:#333333;"> public List<BasicDataEntity> SelectBasicData(BasicDataEntity data)
        {         
            return MyList;
        }</span>
   

       VB.net里是public function+方法名(参数)as +方法类型,结尾里要有End Function,其中代码的编写后面不用加分好。而C#里public +方法类型+方法名(参数),后面要有大括号,大括号里一定要有返回,中间的代码编写必需要有分号。

     if语句里也有不一样,VB.net里是if+表达式+then+end if。

If dt.Rows.Count = 0 Then
            MsgBox("卡号未上机")
            Exit Sub
 End If


而C#里是if( 表达式)后面是大括号{}就完事了,比Vb.net简洁。

if (rs.Count < 1)
            {
                MessageBox.Show("卡号不存在,请重新输入卡号!");
                return;
            }

注意到了吗?退出程序他们也是不一样的,vb.net里是Exit sub,而C#里的是直接return。


三、问题集锦

1、数据类型转换

    1)string类型转换成decimal类型

ce.RegisterMoney=decimal .Parse ( txtRegisterMoney.Text.Trim());

     2)string类型转换成整数型

 txtIncome.Text = Convert.ToInt32(txtTemporary.Text)

2、获取本机时间

     txtLoginDate.Text = DateTime.Now.ToString("yyyy-MM-dd");
     txtLoginTime.Text = DateTime.Now.ToString("HH:mm:ss");


3、获取本机计算机用户名

 we.Computer = Environment.MachineName;
也可以这样

onoffEntity.ComputerName = Dns.GetHostName().Trim();

4、获取DateTimePicker里的日期
StartDate = dtpStart.Value.ToString("yyyy-MM-dd");

5、比较两个日期的大小

因为在比较两个日期的时候,只是简单的比较这两个日期的value值,但是即使是相同的两个日期也说是起始日期大于截止日期,原因是这个控件value值具体到了小时分钟,所以就出现这个问题。只能把判断语句这样写了。

if (Convert.ToDateTime(StartDate) < Convert.ToDateTime(EndDate) || Convert.ToDateTime(StartDate) == Convert.ToDateTime(EndDate))
            {
          }

6、获取泛型或DataTable的值。

在vb.net里我们的代码是这样编写的

txtLoginTime.Text = dt.Rows(0).Item(3)//DataTable的某行某列的值

txtStudentNo.Text = lce(0).StudentNo//获取泛型的某个值

在C#里是这样的

txtStudentNo.Text = lce[0].StudentNo;

Ice是实例化的泛型,注意到这两个括号不一样了吗?


7、listBox的运用

充值和退卡这两个地方,我们用到了listbox这个控件,在VB版的机房收费系统里,我们用上了换行符,写了一串字符,很麻烦。但是在C#里就是这样的简单几句代码就能搞定,不用到担心排版的问题。

                 lbCancel.Items.Add("退卡卡号:" + cce.CardNo);
                 lbCancel.Items.Add("应退款金额:" + cce.CancelMoney+"元");
                 lbCancel.Items.Add("退卡日期:" + cce.CancelDate);
                 lbCancel.Items.Add("退卡时间:" + cce.CancelTime);
                 lbCancel .Items .Add("办理退卡老师:" + cce.UserId);                   
                 MessageBox.Show("退卡成功!");


8、工厂层的编写

工厂层的编写一开始是照着vb.net版的工厂层改的,但是运行起来有些错误,后面思思改好了(觉得思思真的很厉害)

VB.net 的代码是这样的

Public Function CreateIUser() As IDAL.Iuser
        Return CType(Assembly.Load("JifangDAL").CreateInstance("Jifang.DAL" & "." & "UserDAL"), IDAL.Iuser)
End Function


而C#里是这样的

        /// <summary>
        /// 基础数据表抽象工厂类
        /// </summary>
        public IBasicData CreateIBasicData()
        {
            IBasicData iquery;
            iquery = (IBasicData)(Assembly.Load("DAL").CreateInstance("DAL.BasicDataDAL"));
            return iquery;
        }


总结

     机房合作虽然经历很常一段时间,曾经抱怨自己为什么不用vB.net来敲,非要用C#来敲。但是现在看来,当初的选择也没有什么错。整个机房合作敲下来,代码的亲和力增加了不少,现在看代码也不担心看不懂这些问题,也增加了不少自信心。



你可能感兴趣的:(【机房合作总结篇】——vb.net版机房与C#版对比)