CLR类型设计之属性】的更多相关文章

在之前的随笔中,我们探讨了参数,字段,方法,我们在开始属性之前回顾一下,之前的探讨实际上串联起来就是OOP编程的思想,在接下来的文章中,我们还会讨论接口(就是行为),举个例子:我们如果要做一个学生档案,我们需要先抽象出来有那些对象实体,比如有一个学生类,里面有学生id,姓名,年龄,班级等字段. 但是这不能满足我们的需求,我们要做学生档案管理,需要知道学生的每科成绩,所以我们还需要一个成绩类,里面定义了学生的学生Id,科目,科目分数,下面是两个类的代码示例 public sealed class…
写到这篇文章的时候,笔者回忆起来以前的开发过程中,并没有注意参数的传递是以值传递还是引用传递的,也是第一次了解到可变参数params,常用的不一定就代表理解,可能只是会用.接下来我们就一起回忆一下关于参数传递中得一些方法技巧. 可选参数和命名参数            在设计方法的参数时,可为部分或全部参数分配默认值,调用这些方法的代码,然后调用这些方法的代码可以选择不提供部分实参,使用其默认值,此外,调用方法时可通过指定参数名称来传递实参.下面的例子为一个有一个形参两个默认值参数的方法:方法第…
在上一篇文章中,介绍了什么是泛型,以及泛型和非泛型的区别,这篇文章主要讲一些泛型的高级用法,泛型方法,泛型接口和泛型委托,协变和逆变泛型类型参数和约束性,泛型的高级用法在平时的业务中用的不多,多用于封装高级方法和一些底层封装,前几天读了一篇文章,如何选择网络上的技术文章,因为现在关于技术的文章可以说非常多,但是时间是有限的,如果花很多时间阅读了一篇文章却没有什么用,岂不是很浪费时间,所以第一步选择自己感兴趣的文章阅读,第二要把阅读过的文章尽可能实现一次,读书万遍不如走上一遍,第三尽量不读翻译性的…
无论学习那门语言都要学习函数体,C#,JAVA,PHP,都会涉及到函数体,而C#的函数体成员并不少,方法和构造器就是函数体成员之一,函数体成员还包括但不限于:方法,属性,构造器,终结器,运算符及索引器. 方法就是某个类相关的函数,也可以返回简单的基元类型或者什么也不反回,方法可以定义其公开性,如果使用static修饰符则变为静态方法. 属性是可以从客户端访问到的函数组,访问形式和访问类相同,C#为读写类中的属性提供了专用语法. 构造器是实例化对象时自动调用的特殊函数,必须与所属的类同名,且不能有…
         前言 孔子说:温故而知新,可以为师矣.所以对于学习过的知识要多复习,并且每一次复习都要尽可能的去扩展,而不是书本上的几句理论知识.很多人都喜欢分享自己的学习内容,记录下生活的点点滴滴,我也很喜欢这种做法,昨天用了一天的时间,翻了很多的博客,看了不少GIT上的开源代码分享.还有亦师亦友的同事给出的建议.我今后也会多多分享一些学到的东西. 先回顾一下C#最基础的内容,在过去的一年开发,随着出现了很多的错误,让我明白了基础的重要性,程序员如果不能很好的理解他所用的语言基础,那么就会有…
在讨论泛型之前,我们先讨论一下在没有泛型的世界里,如果我们想要创建一个独立于被包含类型的类和方法,我们需要定义objece类型,但是使用object就要面对装箱和拆箱的操作,装箱和拆箱会很损耗性能,我们接下来会用一个示例来说明使用泛型和使用非泛型对值操作时的性能差距.但是如果使用泛型,也是同样的效果,不需要装箱和拆箱的同时泛型还保证了类型安全 言归正传,.Net自2.0以后就开始支持泛型,CLR允许创建泛型引用类型和泛型值类型,但不允许创建泛型枚举类型,此外,CLR还允许创建泛型接口和泛型委托.…
无参属性 许多类型都定义了能被获取或更高的状态信息.这种状态信息一般作为类型的字段成员实现.例如一下类型包含两个字段: public sealed class Employee{ public string name; public int age; } 创建该类型的实例后,可以使用一下形式的代码轻松获取或设置他的状态信息 e.Name=”ascdasdasd”; 这种设置对象状态信息的做法十分常见,但不应该像这样实现.面向对象设计和编程的重要原则之一就是数据封装,意味着类型的字段永远不应该公开…
在使用WebService开发时,同时使用了EF和linq,查询数据时,使用linq(查询订单)可以正常拉出数据, 但是使用EF(查询用户)却会报以下错误: {"指定的架构无效.错误: \r\nCLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型与 EDM 类型"Orders"匹配.以前找到的是 CLR 类型"WebService1.Model.Orders",新找到的则是 CLR 类型"WebService1.LinqModel.O…
异常信息: "指定的架构无效.错误: CLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型与 EDM 类型“Person”匹配. 以前找到的是 CLR 类型“A.Person”, 新找到的则是 CLR 类型“B.Person”. 这类异常信息在代码里面出现过几次,每次的解决方案都让人匪夷所思.不知道为什么出现,也不知道为什么被解决了. 查阅了一些国外的资料,链接: Don't use classes with the same name - EF uses only class na…
一.无参属性 对于字段,强烈建议将所有的字段都设为private.如果允许用户或类型获取或设置状态信息,就公开一个针对该用途的方法.封装了字段访问的方法通常称为访问器(accessor)方法.访问器方法可选择对数据的合理性进行检查,确保对象的状态永远不被破坏.如下代码: private sealed class Employee { private String m_Name; private Int32 m_Age; public String GetName(){ return m_Name…