C#与DELPHI问题,初学c#开发WINFORM的疑惑:
1.C#没有DBTEXT类的组件,难道得再取一次数据显示在编辑框上,还是怎么回事?2.Delphi中可以用Unit新建一个公共单元储存全局变量和函数,c#中在哪里创建?让各窗体都可以访问此变量的值?3.DELPHI可以不用写SQL语句代码实现增删除改,C#增删改都得手动写SQL语句手动执行?4.那在Winform数据库开发方面c#较DELPHI的优势到底在哪呢?
1.C#没有DBTEXT类的组件,难道得再取一次数据显示在编辑框上,还是怎么回事?2.Delphi中可以用Unit新建一个公共单元储存全局变量和函数,c#中在哪里创建?让各窗体都可以访问此变量的值?3.DELPHI可以不用写SQL语句代码实现增删除改,C#增删改都得手动写SQL语句手动执行?4.那在Winform数据库开发方面c#较DELPHI的优势到底在哪呢?
(2)C#可以创建一个静态类,在里面定义:
public static class GlobalData
{
public static string ShareStringVar = "";
}
(3)ADO.NET数据控件支持自动产生SQL。
(4)这是一个仁者见仁的问题。取决于你对问题1、2、3的理解。虽然C#可以实现1、2、3,但是这些都是非常不推荐的设计方法,说明如下:
对于1,绑定是一个非常不好的习惯,一旦数据库结构发生修改,用户界面也要修改,而且和数据库绑定的程序,你将失去将窗体和代码“抽取出来”,并且在另一个项目中重用的可能。
对于2,同样的原因,如果程序依赖公共变量传值,那么程序也变得难以修改,当你想移植程序代码的时候,你不能简单将窗体代码拷贝出去就能用,还得满世界寻找是否用了什么全局变量。因为任何窗口都可以修改这些变量,当程序出现问题,你也很难说出是哪些代码出现了问题。
对于3,众所周知,那种所谓“不写sql”的东西功能相当有限,实际上开发中根本用不了。不写sql的另一个办法是使用语言内置的查询(LINQ)和ORM框架。结合以上,我想说,C#可能没有什么优势,在你看来。因为C#是为程序员而设计的,目的是开发那些复杂的,灵活的,具有弹性的应用程序。而你的所有需求都是一个用户希望快速搭建程序的需求,在这方面,C#提供了和Delphi类似的支持(毕竟一个人搞的),但是谈不上改进,这不是微软这10年的重点。但是,你可能没有听说,微软有一个叫visual studio lightswitch的面向业余用户的产品,它的设计思想就和你说的类似,目的是让不会编写程序的人也能开发简单的程序。它只需要配置用户界面、报表和数据库等等就可以得到一个程序,使用visual studio lightswitch比Delphi应该更加简单。
3.DELPHI可以不用写SQL语句代码实现增删除改,C#增删改都得手动写SQL语句手动执行?按楼上所说,现在我所看见的所有的DELPHI数据库程序,都是以绑定的方式和自动生成SQL语句为主的呀?存在应该有它的合理性,按1楼的说法那不是基本上所有DELPHI开发的数据库程序都是不规范的?烦请高手指点下!
事实上,你没有去了解visual studio lightswitch,这个产品将快速原型开发,无需编码的特性发挥到了极致,就你说的1、2、3点来说,如果你用过visual studio lightswitch,你会发现它更有优势。
关于第2个问题,我想请教下:当用户登陆成功的时候,我用DELPHI的UNIT记录用户的身份信息,当显示某个模块时,需要根据些用户的ID或者权限值来判断增删改功能是否有权限和菜单是否能够显示等。
quote----
既然用到数据库,用户权限这些自然是保存在数据库中,LZ之前是怎么做的?有点后怕的感觉。quote---
2.Delphi中可以用Unit新建一个公共单元储存全局变量和函数,c#中在哪里创建?让各窗体都可以访问此变量的值?
quote---
各窗体或控件间的通讯方式多种多样,delphi或c#和其他语言间实现的方式都是大同小异的。session、cookies 这些不是某种语言的内容,是各种语言对其这种技术的实现。
问的所谓“记录”无非就是通讯问题,文件(序列化)、管道、共享断、数据库等等等不都能吗。各语言间没有太多的差异,delphi、.net、java 这些不过都是商品,要比较delphi和.net的优势的话...delphi编译出的是原生程序,要比.net这种虚拟机机制的托管代码的执行效率快,
而且delphi xe3已实现了有限的跨平台,.net和java都是出生时就“号称跨平台”了,
delphi有大量成熟的第三方组件。
开发效率上跟.net没有太多区别,但是作为一个商品,.net是M$的,delphi是XXX的,各自得到的市场支持和推广的差距不言而喻。建议LZ如果不是为生活所迫而开始学.net的话,还是继续好好学已有基础的delphi吧,至少把oop学好。