C#属性和数据

来源:互联网 发布:英语单词词典数据库 编辑:程序博客网 时间:2024/05/29 12:26

</pre>关于C#中先用数据实现再在需要的时候改成属性的问题。<p></p><p></p><pre code_snippet_id="580033" snippet_file_name="blog_20150114_2_4078781" name="code" class="csharp">public class Customer{     public string Name;}
这个类描述一个客户(Customer),包含了一个名称。你可以使用熟悉的成员表示方式获取设置该名称:

string name=customerOne.Name;customerOne.Name="This Company,Inc.";

看似简单直观,你也会认为若日后将Name改成属性,那么代码也可以无需修改保证正常。但是这个答案并不是完全正确的。属性仅仅是访问时类似于数据成员,这是语法所实现的目的。不过属性并不是数据,属性的访问和数据的访问将会生成不同的MSIL(Microsoft Intermediate Language,微软中间语言)指令。

虽然属性和数据成员在源代码层次上是兼容的,不过在二进制层面上却大相径庭。这也就意味着,若将某个共有的数据成员改成了与之等同的共有属性,那么就必须重新编译用到该公有数据成员的代码。C#把二进制程序集作为一等公民对待。该语言本身的一个目标就是支持发布某个单一程序及时,不需要更新整个的应用程序。而这将数据成员改为属性的简单操作却颇花掉了二进制的兼容性,也就会让更新单一程序集变得非常困难。

0 0