当前位置:七道奇文章资讯网站建设网站编程
日期:2010-12-26 10:30:00  来源:本站整理

asp.net C# 中的 static 关键字[网站编程]

赞助商链接



  本文“asp.net C# 中的 static 关键字[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

01: /// <summary>
02: /// 利用字节数组中的值初始 zipinteger 构造的新实例
03: /// 注意:本构造函数会破坏传入的 bits 参数的值.
04: /// </summary>
05: /// <param name="bits">次序为 big-endian 的字节值的数组</param>
06: public zipinteger(byte[] bits)
07: {
08: if (bits == null) throw new argumentnullexception("bits");
09: if (bits.length < 1 || bits.length > 9) throw new argumentexception("invalid length", "bits");
10: byte[] mask = { 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00 };
11: if (bits.length > 1 && bits.length < 9) bits[0] &= mask[bits.length - 1];
12: array.reverse(bits);
13: array.resize(ref bits, 8);
14: if (!bitconverter.islittleendian) array.reverse(bits);
15: data = decode(bitconverter.toint64(bits, 0));
16: }


mask 数组其实只需求初始化一次就行了,而不需求每次调用该构造函数时都举行初始化.也就是说,应当将 mask 变量声明为 static 的,以下所示:

static readonly byte[] mask = { 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00 };
希望是美好的,实际是残酷的,加上 static 关键字后,再编译时 c# 编译器会报告以下错误:

error cs0106: 修饰符“static”对该项无效
也就是说,c# 语言不答应利用 static 修饰符来声明办法内部的变量.但是在 c/c++ 语言中是答应这么做的.

假如把该构造函数内部的 mask 变量晋升到构造函数外部,成为 zipinteger 构造的字段成员,便可以声明为 static 的.但是这样一样,读这段代码的人就不简单弄清楚 mask 字段只在这个构造函数内部利用,成为代码的“坏味道”,一点也不文雅了.

好了,让我们写一小段程序来测试一下加上 static 后对运行效率的影响:

01: using system;
02: using system.io;
03: using system.diagnostics;
04: using skyiv.numerics;
05:
06: namespace skyiv.tester
07: {
08: sealed class statictester
09: {
10: static void main()
11: {
12: try
13: {
14: new statictester().run(100000000);
15: }
16: catch (exception ex)
17: {
18: console.writeline(ex);
19: }
20: }
21:
22: void run(int count)
23: {
24: console.writeline(" os version: " + environment.osversion);
25: console.writeline(" clr version: " + environment.version);
26: using (var reader = new memorystream(getbytes(count)))
27: {
28: var watch = stopwatch.startnew();
29: var n = 0;
30: for (var i = 0; i < 10; i++)
31: {
32: reader.seek(0, seekorigin.begin);
33: while (zipinteger.read(reader).hasvalue) n++;
34: }
35: watch.stop();
36: console.writeline(" count: " + n.tostring("n0"));
37: console.writeline("milliseconds: " + watch.elaps教程edmilliseconds.tostring("n0"));
38: }
39: }
40:
41: byte[] getbytes(int count)
42: {
43: var bits = new byte[count];
44: var rand = new random(123456);
45: rand.nextbytes(bits);
46: return bits;
47: }
48: }
49: }


上述程序中第 44 行利用固定的种子初始化 random 类的新实例,从而产生相同的随机数序列,以便用相同的测试用例来举行测试,使测试后果具有可比性.注意,在上述程序中假如 count 值和随机数的种子选获得不好,履行到第 33 行的 zipinteger.read 办法时是有大概抛出 endofstreamexception 非常的.


  以上是“asp.net C# 中的 static 关键字[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • ASP利用正则表达式提取内容
  • nginx 反向代理iis支持 ASP脚本设置
  • <b>ASP.NET安全设置防备ASPXSpy</b>
  • Ubuntu Server+Apache 运行 asp.net
  • 怎样ASP.NET MVC调用Delphi开辟的Web报表
  • 学习ASP.NET需求举行的步骤办法
  • ASP.NET脚本过滤-避免跨站脚本攻击
  • Asp WinHttp.WinHttpRequest.5.1 对象利用详解
  • ASP防XSS注入函数
  • Asp 防备CC攻击模块 (Anti-CC.asp)
  • metasploit metasploit 中文系统安装失利问题
  • Ubuntu 11下安装Metasploit Pro 4.0.0
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .