using关键字有几种用途!以及#warning与#error的区别!

本文详细解析了C#中using关键字的四个主要用途:引用命名空间、为命名空间创建别名、自动释放资源和try-catch-finally语句的简洁实现。同时,解释了conn.Dispose()与conn.Close()的区别,并对比了using语句与try-catch-finally语句的适用场景。此外,还介绍了#warning与#error的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using关键字在C#中主要有两个用途:

1.引用命名空间,以减少输入 如 using System.Text;

2.为命名空间创建别名 如 using Project = PC.MyCompany.Project;
具体见:http://msdn.microsoft.com/zh-cn/library/sf0df423(v=VS.80).aspx

3.用于在限定范围结束后自动释放资源,如自动释放数据连接、事务句柄等

这种用法常常在数据库的连接语句中应用到

4.还有一种就是用try catch finally的格式(using的语句十分简洁而且在using中不用再写close,而try catch finally格式要在最后的finally中关闭连接conn.Close())

其含义具体见:http://msdn.microsoft.com/zh-cn/library/yh598w02(v=VS.80).aspx

页面下方的:using语句的本质就:using语句实际上生成的IL代码中是一个try, finally代码块,在finally代码块里释放资源。

这些里面可能会出现一个conn.Dispose(),它和conn.Close()是有区别的
如:
conn.Open()
conn.Close()
conn.Open()//这是可以的
-----------------------
conn.Open()
conn.Close()
conn.Dispose()//出错
可见dispose就是将conn毁掉,不能再用
对于是using还是try-catch-finally,可以参见:
综上可得:
using语句简洁;
using的本质也是try-catch-finally,而且在finally里会调用Dispose,而且Dispose内部会自动判断有无close,如果无,会自动先close,然后Dispose;
两种结构的用途不一样,如果是专门的纠错,try-catch-finally更合适;
推荐使用using,需要try catch finally的时候也可以用
 
 
#warning与#error的区别!
#warning在编译器中运行时! 产生警告信息! 给用户显示#warning后面的文本,之后继续编译!
 
#error在编译器中运行时! 产生错误信息! 给用户显示#error后面的文本,之后退出编译!
 
#include "form.h" #include "ui_form.h" #include <memory> #include "/home/hqyj/Desktop/Qtxue/x/xsgl/xsgl/mainwindow.h" #include <QtCore/qbytearray.h> #include <QtCore/qmetatype.h> #include <QObject> #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file 'widget.h' doesn't include <QObject>." #elif Q_MOC_OUTPUT_REVISION != 67 #error "This file was generated using the moc from 5.14.2. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif QT_BEGIN_MOC_NAMESPACE QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form) { ui->setupUi(this); } Form::~Form() { delete ui; } struct qt_meta_stringdata_Widget_t { QByteArrayData data[19]; char stringdata0[445]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_Widget_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_Widget_t qt_meta_stringdata_Widget = { { QT_MOC_LITERAL(0, 0, 6), // "Widget" QT_MOC_LITERAL(1, 7, 22), // "onConnectButtonClicked" QT_MOC_LITERAL(2, 30, 0), // "" QT_MOC_LITERAL(3, 31, 11), // "onConnected" QT_MOC_LITERAL(4, 43, 12), // "offConnected" QT_MOC_LITERAL(5, 56, 11), // "onReadyRead" QT_MOC_LITERAL(6, 68, 22), // "onDisplayButtonClicked" QT_MOC_LITERAL(7, 91, 25), // "onDisconnectButtonClicked" QT_MOC_LITERAL(8, 117, 29), // "on_data1PushbuttonJia_clicked" QT_MOC_LITERAL(9, 147, 30), // "on_data1PushbuttonJian_clicked" QT_MOC_LITERAL(10, 178, 29), // "on_data2PushbuttonJia_clicked" QT_MOC_LITERAL(11, 208, 30), // "on_data2PushbuttonJian_clicked" QT_MOC_LITERAL(12, 239, 29), // "on_data3PushbuttonJia_clicked" QT_MOC_LITERAL(13, 269, 31), // "on_data3PushbuttonJiian_clicked" QT_MOC_LITERAL(14, 301, 29), // "on_data4PushbuttonJia_clicked" QT_MOC_LITERAL(15, 331, 30), // "on_data4PushbuttonJian_clicked
最新发布
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值