社区
C#
帖子详情
三种声明方式哪种最好呢?
wsbylls
2011-08-10 11:23:55
举个例子,比如
1.DataTable dt = new DataTable() ;
dt=...
2.DataTable dt = null;
dt=...
3.DataTable dt ;
dt=...
三者有什么区别?有哪个最好呢?
...全文
248
30
打赏
收藏
三种声明方式哪种最好呢?
举个例子,比如 1.DataTable dt = new DataTable() ; dt=... 2.DataTable dt = null; dt=... 3.DataTable dt ; dt=... 三者有什么区别?有哪个最好呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shaofei830927
2011-08-29
打赏
举报
回复
[Quote=引用 11 楼 icedmilk 的回复:]
3.DataTable dt ;
谁说这种方式是废柴了
C# code
string result;
Func(out result);
类似这种代码不是很常见吗?
[/Quote]
这个 Func 方法肯定是你写的
可以在 framework 中找到一个我看看么
framework 要求
引用类型的赋值为默认值 列表赋值为空列表 值类型为默认值
否则 做输出参数要throw异常
你写的func不抛异常 自然是例外
shaofei830927
2011-08-10
打赏
举报
回复
我用的时候只用到
1.DataTable dt = new DataTable()
2.DataTable dt = Get...()
这两种 其他都是废柴
shaofei830927
2011-08-10
打赏
举报
回复
所有代码只用到三种情况
1.DataTable dt = new DataTable()
2.DataTable dt = Get...() -- 这里的Get方法要注意
3.DataTable dt = null; --等同于DataTable dt; 编译之后两者一样
建议第二种 有可能的话会用到第三种
第一种 是构建内存数据表 比如说要Fill(dt) 其他情况都不要用
原因是 早晚是要赋值的 为什么要先赋给他一个没用的对象,在堆中开辟空间 到后来在释放掉呢
。NEt的编译优化不了这种情况的
根据framework代码惯例 方法返回对象
普通实体类型如Person对象:如果不存在 就返回null 而不是返回new Person()
列表类型如List<Person>对象:如果不存在符合条件的结果 返回 空集合 而不是返回 null
dataTable DataSet等 对象 返回null 而不是返回 new DataTable();
py1025677845
2011-08-10
打赏
举报
回复
[Quote=引用 6 楼 fendoudxiaohouzi 的回复:]
引用 1 楼 abbey 的回复:
1.DataTable dt = new DataTable() ;
直接构造一个空的DataTable对象
2.DataTable dt = null;
声明一个指向空引用的DataTable,稍后才实例化或改变引用
3.DataTable dt ;
类似2,只是没有初始化为null
我的习惯:避免3,看情况使用1或者2
……
[/Quote]
好像就这样啊
cosmo_sei
2011-08-10
打赏
举报
回复
如果这两行连着,就可以用写法1:
DataTable dt = null;
dt = new DataTable();
写法2是为了延迟初始化
DataTable dt = null;
//...中间还有N行代码
dt = new DataTable();
写法3我觉得并不完全没用,比如当声明为readonly:
readonly DataTable dt;
在构造函数中初始化或赋值:
ctor(DataTable dt){ this.dt = dt; }
实际上,如果在方法级别中,使用没有初始化的变量VS编译会报错。
fendoudxiaohouzi
2011-08-10
打赏
举报
回复
[Quote=引用 1 楼 abbey 的回复:]
1.DataTable dt = new DataTable() ;
直接构造一个空的DataTable对象
2.DataTable dt = null;
声明一个指向空引用的DataTable,稍后才实例化或改变引用
3.DataTable dt ;
类似2,只是没有初始化为null
我的习惯:避免3,看情况使用1或者2
[/Quote]
+11111
专心做码农
2011-08-10
打赏
举报
回复
[Quote=引用 3 楼 xinyaping 的回复:]
同1楼,抛弃3,视情况采取1或2。
[/Quote]
+1
熙风
2011-08-10
打赏
举报
回复
[Quote=引用 3 楼 xinyaping 的回复:]
同1楼,抛弃3,视情况采取1或2。
[/Quote]
up
YapingXin
2011-08-10
打赏
举报
回复
同1楼,抛弃3,视情况采取1或2。
yelang
2011-08-10
打赏
举报
回复
没有最好,只有更好,看实际需要,你哪种都可能用得到,就看到时候用哪种最方便了。
老毕
2011-08-10
打赏
举报
回复
1.DataTable dt = new DataTable() ;
直接构造一个空的DataTable对象
2.DataTable dt = null;
声明一个指向空引用的DataTable,稍后才实例化或改变引用
3.DataTable dt ;
类似2,只是没有初始化为null
我的习惯:避免3,看情况使用1或者2
极地_雪狼
2011-08-10
打赏
举报
回复
第一种情况下会分配内存空间
第二种和第三种情况基本是一样的,只不过习惯不同而已。
以专业开发人员为伍
2011-08-10
打赏
举报
回复
[Quote=引用楼主 wsbylls 的回复:]
2.DataTable dt = null;
dt=...
3.DataTable dt ;
dt=...
[/Quote]假设就是这样的代码,我会觉得2很多余写个“= null”,我都是特意给为1。
以专业开发人员为伍
2011-08-10
打赏
举报
回复
你自己写个测试程序。如果能测试出(当放到一个大软件里时)值得区分哪一种方式比其它好,既从用户体验角度或者从运维这样一个程序需要的硬件资源投资成本角度有明显区别,也算是很大的创举了。
ggw128
2011-08-10
打赏
举报
回复
同意一楼的
salecn
2011-08-10
打赏
举报
回复
来学习了,不错!
theillusion
2011-08-10
打赏
举报
回复
都是一样的,CRL看不到任何不同,但是从代码风格角度来说,推荐在声明时赋值,后面使用,而不是重新赋值
DataTable dt = new DataTable() ;
use(dt);
一个例外是使用out参数
DataTable dt ;
foo(out dt);
YapingXin
2011-08-10
打赏
举报
回复
[Quote=引用 22 楼 dashanliu 的回复:]
DATATABLE和DATESET 这两者固然好用,不过我还是建议楼主用LIST对象比较好,这样操作起来比较方便。
[/Quote]
跑题了。如果人家需要的就是DataTable呢?
当然我也同意尽可能用开销小的数据结构。
刘大山
2011-08-10
打赏
举报
回复
DATATABLE和DATESET 这两者固然好用,不过我还是建议楼主用LIST对象比较好,这样操作起来比较方便。
YapingXin
2011-08-10
打赏
举报
回复
[Quote=引用 19 楼 geminixxxcc 的回复:]
DataTable dt = null;
这是脱裤子放屁,
DataTable dt;
这么写dt本身就等于null。
[/Quote]
先别这么武断。
显示声明从coding style上来说是值得提倡的。
加载更多回复(10)
函数的
三种
声明
方式
JavaScript 有
三种
声明
函数的方法。 (1)function 命令 function命令
声明
的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。 function ...
CSS的
三种
声明
方式
和选择器(具体代码实现)
三种
声明
方式
一:在head标签中使用style标签
声明
: 作用:此
声明
一般
声明
当前网页的公共样式或者给某个标签的单独样式 二:在标签上使用style属性进行
声明
: 作用:此
声明
会将css样式直接作用于当前标签。...
声明
变量的
三种
方式
声明
变量的
三种
方式
先
声明
,再赋值:【常用】 数据类型 变量名; 变量名 = 值; 例: int b; b = 5;
声明
并赋值:【常用】 数据类型 变量名 = 值; 例: int a = 5; 多个类型的变量的
声明
和赋值:【了解】 ...
js数组的
三种
声明
方式
数组的
三种
声明
方式
: 1.var cars=new Array(); cars[0]="a", cars[1]="b" , cars[2]="c"; 2.var cars=new Array("a","b","c"); 3.var cars=["a","b","c"] 注:整型不加引号;双引号内用单引号;注意...
数组的
三种
定义
方式
数组的
三种
定义
方式
1.数组概念 数组概念: 数组就是存储数据的容器,保证多个数据的数据类型要一致,长度固定。 2.数组的定义
方式
一 格式: 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型...
C#
111,093
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章