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

推荐订阅源

WordPress大学
WordPress大学
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
月光博客
月光博客
V
Visual Studio Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Recorded Future
Recorded Future
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
博客园 - Franky
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News | PayPal Newsroom
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
F
Full Disclosure
The Cloudflare Blog
Y
Y Combinator Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
AI
AI
N
News and Events Feed by Topic
T
Tor Project blog
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog

博客园 - Laser.NET

WumiiRelatedItems C#创建一个线程为什么会消耗那么多的内存? 【跨平台的.NET解决方案】-Mono越来越成熟! [转]英语中符号以及标点符号的读法(或许对查看英文资料的人有些帮助) 06年中国互联网调查结果之:网民上网经常使用的网络服务 让短信更好的为企业服务!——短消息交互平台简介 GoF Patterns [ASP.NET2.0]一个方便使用的在线截图Web控件-WebImageMaker [转]经典的几个网络签名:) [新手点滴] IDbCommand.Prepare()方法。 [原创] 我的生活我安排,我的调度我做主!——介绍一个 日程安排/工作计划/任务调度 的Scheduling组件。(二) [原创] 我的生活我安排,我的调度我做主!——介绍一个 日程安排/工作计划/任务调度 的Scheduling组件。(一) [ADO.NET]由数据库触发器引发的问题 [转] IE的bug列表 [C#语言] C#语言中又一个自认为不太理想的地方。。。 [辅助工具] 一个方便将ASP代码升级到ASP.NET的小工具 -- ASP Code Migrator! 关于ASP.NET页面嵌入代码的高亮显示的问题。 这样的网站,2个月是否可能?? [新手点滴] C# vs VB.NET 哪个好?
[C#语言] C#语法中一个很奇怪的地方:)
Laser.NET · 2005-05-06 · via 博客园 - Laser.NET

今天在写代码的时候发现了一个比较怪的现象:我明明定义了一个get和set都可以的属性,但是当我在类的外部需要调用这个属性的时候却发现在Intellisense里找不到那个属性,而是发现了get_Property和set_Property两个方法。怪吧:)
还是让我们先来看一下代码:

上面的代码中语法并没有任何错误,而且现有的代码已经编译过,并运行正常。而且其他属性都可以正常的找到,唯独这个SourceFile属性找不到,真是奇怪!那么这个属性到底跑到哪里去了呢?~~~
查看了一下对象浏览器中的关于这个类的成员列表,也变成了两个get/set方法,还是找不到那个SourceFile属性:

百思不得其解。。。一个偶然的机会让我注意到了这个类实现了接口IPageBlock,这个接口的源码如下:

    public interface IPageBlock
    {
        
string SourceFile { get; } // Only getter are declared here.

        
bool SourceLoaded { get; } void LoadSource();

        Control Control { 

get; }
    }

在看了接口中关于SourceFile属性的声明后我恍然大悟!原来导致属性被拆散成两个函数的主要原因是接口对属性访问器的声明与实现类中的对应属性的访问器定义不一致:)

找到原因了该简单总结一下了:当实现类中对应属性的访问器的数目多于接口中声明的属性访问器的时候,虽然有些不一致,但是这个时候C#语法是允许的,不认为是错误,编译照通过。但是原本直观的属性访问语法就会被拆散成两个以get_和set_开头的方法了,以后大家可要当心了:)

另外不知道C#2.0中有没有这样的问题?感兴趣的朋友不妨尝试一下,并告知大家,多谢!