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

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
Help Net Security
Help Net Security
Security Archives - TechRepublic
Security Archives - TechRepublic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
W
WeLiveSecurity
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Hacker News: Front Page
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
Project Zero
Project Zero
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
Last Week in AI
Last Week in AI
腾讯CDC
Schneier on Security
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
量子位
L
Lohrmann on Cybersecurity
J
Java Code Geeks
Cyberwarzone
Cyberwarzone
Recent Announcements
Recent Announcements
IT之家
IT之家
博客园_首页
罗磊的独立博客
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
博客园 - Franky
P
Palo Alto Networks Blog
V2EX - 技术
V2EX - 技术
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Martin Fowler
Martin Fowler
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
G
GRAHAM CLULEY
Cloudbric
Cloudbric

博客园 - Sumtec

This is it GOODBYE 博客园(附最后一个QUIZ部分不完整答案) 答案of QUIZ:一个网页上面有多少个SilverLight4应用时会发生莫名其妙的崩溃?和什么有关? QUIZ:一个网页上面有多少个SilverLight4应用时会发生莫名其妙的崩溃?和什么有关? QUIZ:一个有8个属性的匿名类大约会占多大的文件大小? 答案 of QUIZ:mscorlib当中最占文件空间的类是哪一个类? QUIZ:mscorlib当中最占文件空间的类是哪一个类? 大家来C#微群吧! 优秀程序员的修炼 做一个有独立脑袋,愿意思考的人 如何不成为傻瓜 世界主要是由傻瓜组成的 解决问题不是光凭感觉和Google的 在创业团队图什么 支付宝的神奇体验 关注的都来一下,谢谢 拆迁条例据说也要有变化了 5年又5个月了 谁知道C# 5.0都会有些什么?
很简单的问题
Sumtec · 2011-02-16 · via 博客园 - Sumtec

声明:切勿以此为笔试题。

我们很多时候都会激烈的讨论算法、数据结构、设计模式、N层架构、某某框架、系统架构,可是真的在实战当中,才会发现原来有些很简单的问题我们会不知道答案。比如说:

        private static void DoWhileContinueTest()
        {
            
int i = 0;
            
do
            {
                Console.WriteLine(i);
                i
++;
                
if (i < 3continue;
            }
            
while (false);
        }

上面的输出是什么呢?这个问题看起来好像很简单,continue不就是进入下一次循环嘛。可问题是,如何进入呢:是直接走到循环最上面的一行代码呢,还是走到循环条件的判断?for、foreach和while都是走到最上面一行代码,而最上面一行代码都存在或者隐含了循环条件的判断。do-while因为循环判断条件在最后,因此不可能同时符合这两个说法,那么到底哪一个说法才是真的呢?

这个问题Google之似乎是找不到答案的,反正我用关键字“do while continue”没有找到,在microsoft.com找也没有找到。MSDN对于continue的描述也只是很简单的说“continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代”,也没有do-while的continue示例。“一次迭代”这个说法包不包含“循环条件的判断”还真不是显而易见的:do-while的是先执行循环体后判断,如果认为这样算一次迭代,那么下一次迭代也应该认为是先执行循环体,然后再执行判断;如果认为每一次迭代都是先判断循环条件,后执行循环体的,那第一次显然不是这样;又或者可能认为一次迭代不包含循环条件判断,但根据微软的说法又和for、foreach和while等情况不匹配。

其实无论结果如何,MSDN上的说法肯定是不严谨的。好吧,我们忽略MSDN的问题,这个疑惑总归要解决的。结果如何,请君自己动手以便加深记忆。

可能有人着急想要知道答案,又或者手头没有开发工具,好吧,我把答案贴出来。

答案是输出:
0

而不是:

0
1
2

也就是说,continue的准确含义是:
立即跳过后面的语句,直达循环条件判断处。
或者说是:立即执行条件判断,如果条件判断成立,则进入下一次迭代,否则跳出循环体。

再比如:

代码

        private static void DynamicTest()
        {
            dynamic t 
= new Host.TestPoint();
            t.Test();
        }
public class Host
        {
            
private interface IFace
            {
                
void Test();
            }
public class TestPoint : IFace
            {
                
void IFace.Test()
                {
                    Console.WriteLine(
"OK");
                }
            }
        }

我们知道dynamic是4.0的新特性,是编译器的语法糖。实际上dynamic类型对象在IL里面就是一个object,对其的访问一般来讲就是通过反射来进行调用。(当然,可以通过别的方式来自己扩展,此处忽略。)问题是,这个反射的过程会考虑上面的接口吗?假如不考虑那一定会出错。可是dynamic本身要解决的其中一个问题,是简化ActiveX调用。然而我在实际的使用过程中发现有一个.NET的COM对象上面显式的实现了一个COM接口,也就是说这不是一个Native的COM对象。此时如果不找其中的接口就会导致调用失败,大家猜结果会如何?

可能有人着急想要知道答案,又或者手头没有开发工具,好吧,我把答案贴出来。

答案是抛出了异常,也就是说不考虑其(隐式)实现的接口。

有的时候一些简单的问题,也还是挺有趣的。