繁体   English   中英

关于“ C#中的GUI和C ++中的代码”

[英]About “GUI in C# and code in C++”

首先,直到现在,我所有的编程教育都以控制台应用程序为目标,就像每个开始学习C和C ++的人一样。 (我知道2种语言)现在,我想跳到漂亮的图形世界。

因此,我正在探索Windows窗体,试图了解它使用的语言(与本机C ++完全不同)时,我已经头疼不已,但是我设法完成了一些事情,例如使用文本框和按钮。

嗯,事实是,我读过很多地方,为了避免在尝试用C ++编写Winform时出现头痛,我最好“用C#来构建GUI,因为它更容易,而且逻辑和C ++都可以。 ”。 这就是我的问题,我完全不理解该声明。 那是什么意思?

同样,C#与C ++类似,是要确认该语句吗? 原因是,如果C#与C ++太不同,我将不得不学习整个C#语言

希望你理解我的怀疑。

PD:对我的英语不好说。

琼(Joan),虽然当然可以用C#开发应用程序前端,也可以用C ++编写逻辑,但我相信这样做会浪费很多精力,因为您只会使自己复杂化而没有真正的好处,因为您可以同时编写这两种代码用相同的语言。

与C ++相比,C#具有许多优点,而且我个人主要使用C#,但是我可以清楚地看到许多喜欢C ++的程序员。

现在进入有关C ++和C#之间相似性的问题,答案是肯定的。 是的,因为C#的语法显然是从C ++派生的。 诸如ifs和for循环之类的许多东西都是完全相同的,因此,如果您知道如何用C ++编写if,则可以用C#编写。

区别(也是最关键的区别)在于语言的工作方式。 C ++是严格编译的语言(从C ++代码到机器代码)。 C#是一种解释型语言(它从c#到MSIL,在运行时到机器代码)。 在C#中,如果未明确允许,则不能使用指针算法;在C ++中,可以(并且将)使用指针算法。 C#具有垃圾回收,而C ++没有。

最后,正如我在第一段中所述,您可以使用两种语言来构建应用程序,但这将非常复杂。 我的建议是学习一些C#,然后确定要使用哪种语言来构建GUI应用程序。 但是,即使有那么一秒钟,也不要相信C ++不能用于构建前端,因为有许多框架可以使用它。 我从脑海中记得的是Qt

您的另一个选择是使用“ C ++ / CLI”,它是可以使用.NET Framework的C ++风格(C#使用相同的框架)

编辑:感谢杰里指出托管C ++已过时,而C ++ / CLI是其中之一!

C#具有花括号,分号,并使用类的概念。 它具有“ C派生”语法,但与C ++非常不同。 Java实际上是C#的前身,而不是C ++。

您可以使用C#构建应用程序GUI,然后使用各种调用C ++的方法(例如P / Invoke)。 除非您正在使用大量现有的库,或者正在寻找绝对的性能,否则它将是一件令人头疼的事情。

如果要查找使用C ++的现代Windows GUI的示例,请查看Hilo示例程序。

切换到新语言并不是很困难。 您必须学习的几个关键字不是问题。 如果要适应新环境和类库,将花费最多的精力。 那可能就是您的意思,这是事实,您将需要一些时间。

现在进入C#中的拆分GUI和C ++中的代码,然后,例如,如果有缓冲区和字符串,则必须进行所有绑定和参数编组。 我认为这不会使您的生活更轻松。 与本地Dll的接口会变得有些痛苦。 但是,如果您使用第三方dll,并且已经具有较大的工作代码库,则可以尝试启用/clr来编译逻辑代码。 这将生成一个可直接在.NET内部使用的DLL。

注意:WinForms现在对于新应用程序已经过时,请考虑改用WPF。 它可以很好地扩展,但是对于新手来说学习曲线可能会很陡。

请注意,您拥有本机C ++和C ++ / CLI,第一个是您所学的,而第二个是您想要将其与C#GUI结合使用时所需要的。 但是,我建议您不要使用C ++ / CLI,因为如果您在C ++,C#和.NET中没有扎实的基础,这会引起很多混乱。

之所以不能使用本机C ++,是因为C#是一种托管语言,因此您要么必须找到另一个适合C ++的GUI,要么就必须使用C#进行所有操作。 有关托管的更多信息,请参见C ++和C#之间区别的环境部分,本文还将为您提供两者之间的良好比较。

好吧,这不是直接的答案,但希望能对您有所帮助。 既然您已经说过了, 那么您才刚刚开始,并且想要将C ++与GUI结合使用 ,建议您看一下Qt IMO我发现Qt简化了C ++和GUI。 也很好。

尽管这并不是对您所提问题的直接回答,但我首先要警告WinForms基本上已经是死胡同了,因此对于新代码,最好避免使用它们。 如果要在.NET中进行GUI,则当前首选的选择是WPF。

有些人发现C#是做GUI的简便方法。 毫无疑问,Microsoft提供了更多的向导方式,并且如果您使用.NET来完成此工作,则几乎不需要编写任何代码。 其他人(尤其是那些有更多这样做经验的人)可以使用C ++迅速(或什至更多)生成C ++ GUI。

这样的混合语言在相对较大的项目中可以很好地工作,在该项目中您拥有完全独立的团队,在不同部分工作。 对于通常由同一人在两个部分上工作的较小的项目,语法上的差异仅在可能的最坏的水平上出现-差异不大,无法真正换档并以不同的方式思考,但是差异仍然很大,您不能仅仅计划输入内容并希望将其编译。 总而言之,选择一种语言并坚持使用通常会好得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM