惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 赤色火焰

【原创】ECshop会员添加权限的开发教程 关于ASP.NET页面打印技术的总结 解决Google相册打不开的解决办法 仿IPHONE图片浏览的小程序---没事做着玩 XP下Photoshop CS3反应慢,文字显示滞后的解决办法 - 赤色火焰 - 博客园 启用/禁用网卡网络连接 (C# 2005) Visual Studio 2005 提示”试图运行项目时出错:无法启动调试。绑定句柄无效”的解决 [转]ASP.NET 安全认证(四):Form 认证的补充 [转]ASP.NET 安全认证(三): 用Form 表单认证实现单点登录 [转]ASP.NET安全认证(二)灵活运用表单认证中的 deny 与 allow 及保护 .htm 等文件 [转]ASP.NET 安全认证(一)—— 如何运用 Form 表单认证 MediaInfo,可以获取媒体文件信息的类 动软使用心得 向另一页面传递参数总结 Do Anything With ID3 截图图片部分内容以及返回图片实际尺寸 在C#程序中使用系统热键 获取MP3,WMA信息 第一节 你有对象?哼,我也有!Part 8 总结
第二节 你真假唐伯虎!Part 1
赤色火焰 · 2009-01-21 · via 博客园 - 赤色火焰

第二节  真假唐伯虎!

回家以后,看着镜子中的自己,回想起刚走的她,那一颦一笑都吸引着我。不知怎的,一想到她有男朋友,就浑身不自在,可能这就是喜欢吧。虽然之前有过女朋友,可是那份不真实的爱情在心里还是烙下了很深的伤疤。难道我想转移我的感情?不是,绝对不是,因为看到小力的时候,心中总是有一份紧张害怕做错事的感觉,甚至一个笑话没有讲好,都觉得是自己不对。啊~~这就是追女生的感觉吧!想着想着,手不由自主的慢慢移到了脸上,“噗嗞”声不绝于耳,当反应过来的时候,发现自己已经进入走火入魔的境界了,两手手指已在放松、挤压的癫狂状态中,通过人类微弱的思想和意识根本无法控制。心想,去他妈的,让他们(手指)挤去吧,我是如此宽容的一个人。哎,要是她能跟男朋友分手,就算全身长满痘痘我也情愿……

一周后,她跟她男友分手了……我也如愿的起了一身水痘……不过因此我们俩成了知己,我明白分手的痛,她懂起水痘的苦。她哭我也哭,但是我痒,她不痒……虽然后来我的病好了,她的伤也好了,但是我的小窝成了我们俩的聚集地。我也从此学到了一件事情:愿,不是这么许的。

1、今天我也让梨了

地点:革命根据地——我家

(远处传来歌声:“大的人人要,我偏偏要小,小有小的好,太大吃不了……”改自阿牛《小强的车》)

小色:都不用猜,一听就是小力来了,心情怎么能这么好呢?(开门中~

小力:呦,痘哥,是不是小妹我那甜美的声音吸引了你,想开门看看是哪位美女呢?

小色:起外号你怎么张口就能来呢。我是闻到了妖精味,想三打女妖精呢。

小力:呵呵,拿着擀面杖干吗呢?包饺子呢啊?我也来帮忙好了,省的你吃不完剩下。

小色:别,我宁愿少包点,也不用你帮这个忙。你怎么心情这么好?难道是今天你没被狗咬?

小力:滚,你知道恐龙让梨的故事不?今天我也让梨了,我拿了俩梨,一大一小,给我爸爸一个大个的,他夸我半天呢。

小色:你个笨蛋,那是孔融让梨,不过你让梨说成是恐龙让梨倒是很恰当。这事也能让你高兴成这样?

小力:你别逼我使用武力啊!当然高兴啊,他不知道其实我是吃不了才留了个小的呢。

小色:呦,那还得夸你节俭呢。不过,你这么说的话,我倒是想起来前几天你去面试,为什么人家说没通过了。

小力:别提那个伤心事了,那个技术考官肯定是因为我比她长得漂亮。我代码写的那么完美,怎么可能不通过呢。

小色:我记得你说过,你把所有的东西都写到了很多单独的类里了。其实这么做并不是很完美,有一种东西跟类其实很像,我记得之前提起过,叫做结构

小力:好啊好啊,正好趁擀皮的时候,给我讲讲吧。

小色:恩,正好你来包。这类和结构实际上都是创建对象的模板!每个结构都派生于System.ValueTypeSystem.ValueType派生于System.Object。内存中存储方式上的区别是类存储在堆(heap)上,而结构存储在堆栈(stack)上!语法上只是关键字structclass的区别!和类一样,结构也可以包含其他类型。由于结构在内部是值类型的,而类是引用类型,所以结构有时也被称为类的轻型版本。同时,结构不承担引用对象所带来的开销,除非在对其装箱时例外。

小力:也就是说,结构其实是类的一种小型版本,那怎么声明结构呢?还有结构和类到底有什么不同呢?

小色:别着急,我这就告诉你。(从后脑勺猛地抽出笔和纸,小力似乎已经司空见惯,并没有感到惊讶!)

//定义结构

    public  struct Student

    {//定义一个结构的名称为Student

        public string name;

        public int age;

        public char sex;

        public void Info()

        {

            Console.WriteLine("姓名:"+name+"年龄:"+age+"性别:"+sex);

        }

        /*结构体*/

    }

2.1.1

小色:跟类一样,在结构中可以定义成员变量(字段,但是不许赋值),可以有构造函数(但是必须带参),可以有常量、方法、特性、索引器、操作符等。由于客户不必对结构进行实例化(通过new关键字),并且结构不允许给字段设置初始值。所以:

Student stu;

Console.WriteLine(stu.name);

2.1.2

这段代码会出错。因为此时还没有赋值的字段name是不允许被读取的。如果想解决这个问题,可以通对结构进行实例化来解决,

Student stu;

stu.name = "Mgod";

stu.age = 18;

stu.sex = 'N';

Console.WriteLine(stu.name);

2.1.3

Student stu=new Student();

Console.WriteLine(stu.name);

2.1.4

上面的代码,由于2.1.4经过了实例化,所以字段就会被赋予其所对应的默认值。而2.1.3未经过实例化,则所有字段必须全部赋值后才可以调用,否则编译器会报错:使用了未赋值的局部变量

小力:那结构很奇怪啊,怎么可以实例化,也可以不实例化呢?我怎么以前没见过呢?

小色:其实在我们经常见的,平时使用变量类型的时候,就一直在使用的是结构。你看看我们在打上int的时候,编译器给我们的提示

      小力:哦,看到了,那也就是说,我们既可以使用int num;也可以使用int num=new int();了,如果是不经过实例化的前者,则我们就必须将他所声明的字段全部赋值后才能使用。如果是后者,则字段将保存默认值。

小色:对哦,结构的构造也很特殊。结构不允许包含显式的无参数的构造函数,可以利用带参数的构造函数来定义;并且,一旦声明带参数的构造函数,则必须在离开构造函数之前将字段完全赋值。下面我列举一下他跟Class的区别吧:

结构

不同点

引用类型

值类型

可以被继承

不可以被继承

可以有默认构造函数

不可以有默认构造函数

可以添加无参构造函数

可以添加构造函数,但必须有参

创建对象必须使用NEW

创建对象可以不用NEW

可以给字段赋值

不可以给字段赋值

可以继承指定类

总是继承System.ValueType

相同点

可以包含字段、方法等

可以实现接口

A.  为结构分配内存时,速度非常快,因为它们将内联或者保存在堆栈中;结构出了作用域被删除时,速度也非常快。

B.  只要把结构作为参数传递或把结构赋值给另一个结构时,结构是所有内容被复制;而类只复制引用即可。这样就有性能损失!

小力:这么说的话,类占资源这么多,结构速度又快,又差不多能当类用,我就一直使结构不就行了吗?!
小色:当然不行,你要是随意的去使用结构的话,其实也会被嘲笑的。这里我建议你:1、你在设计对象群时,需要面对大量结构简单且状态 信息比较少的对象时,我建议你最好选用结构类型来构造这些小规模数据体。2、由于结构的原型是值类型,所以它整个被定义为一个数据,所以不要试图在结构里构造过多的方法,最好是能不定义方法,就尽量避免下面这段代码是微软给出的结构经典示例:

struct RGB

{ //定义颜色结构

public static readonly RGB RED = new RGB(255,0,0); //定义静态只读对象

public static readonly RGB GREEN = new RGB(0,255,0);

public static readonly RGB BLUE = new RGB(0,0,255);

public static readonly RGB WHITE = new RGB(255,255,255);

public static readonly RGB BLACK = new RGB(0,0,0);

public int Red; //定义字段

public int Green;

public int Blue;

public RGB(int red,int green,int blue)

{ //定义构造

Red = red;

Green = green;

Blue = blue;

}

public override string ToString()

{ //重写ToString()方法来显示各个字段所对应的16进制

return (Red.ToString("X2") + Green.ToString("X2") + Blue.ToString("X2"));

}

}

public class Struct

{

static void OutPutRGBValue(string color,RGB rgb)

{

Console.WriteLine("The Value for {0} is {1}",color,rgb);

}

static void Main(string[] args)

{

OutPutRGBValue("red",RGB.RED);

OutPutRGBValue("green",RGB.GREEN);

OutPutRGBValue("blue",RGB.BLUE);

OutPutRGBValue("white",RGB.WHITE);

OutPutRGBValue("black",RGB.BLACK);

Console.ReadLine();

}

}

2.1.5

这段代码定义了一个结构和静态字段,这样做使存储的效率提高了;使用上又方便了用户,毕竟记住一个

RGB(255,100,255) 要比记住一个“草浅兰” 要困难的多;由于静态成员的加盟,使得每个RGB键值对于整个系统只用定义一次,这样使用起来其高效性和方便性都是显而易见的。

小力:哎呀,你说的太详细了,上面的代码我还是看不太懂,等我一会包完饺子来慢慢研究吧!

小色:恩,没关系,这些都是你在使用过程中慢慢体会的。不过我想你把你之前的那份面试题稍微修改一下,应该就没有问题了吧!

小力:是啊,又学到了个结构,应该没问题了。哎呀,都是你,只顾得听你讲了,都忘了饺子怎么包了。也不知道我的偶像李宇春会不会包饺子呢?

小色:什么?李宇春?!那个男人?

(请看下回:“超级男生”李宇春)

完稿日期:2009121 108