MVVM框架基础

一、结构结构是值类型,不是引用类型。它们存储在栈中或存储为内联(inJine)(如果它们是存储在堆中另一个对象的一部分),其生存期的限制与简单的数据类型一样。结构不支持继承,对于结构,构造函数的工作方式有也些区别,尤其是编译器总是提供一个无参数的默认构造函数,它是不允许替换的。使用结构,可以指定字段如何在内存中布局。结构遵循其他数据类型都遵循的规则:在使用前所有的元素都必须进行初始化。在结构上调用new运算符,或者给所有的字段分别赋值,结构就完全初始化了.当然如果结构定义为类的成员字段,在初始化包含的对象时,该结构会自动初始化为0。结构是会影响性能的值类型,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。结构不是为继承设计的。这意味着:它不能从一个结构中继承。结构是会影响性能的值类型,有正面影响也有负面影响。正面的影响是为结构分配内存时速度非常快,因为它们将内联或者保存在栈中。在结构超出了作用域被删除时速度也很快,不需要等待垃圾回收。负面影响是,只要把结构作为参数来传递一个结构,结构的所有内容就被复制,而对于类则只复制引用。这样就会有性能损失,根据结构的大小性能损失也不同。注意:结构主要用于小的数据结构。
 二、继承在面向对象的编程中,有两种截然不同的继承类型:实现继承和接口继承。实现继承:表示一个类型派生千一个基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承非常有用。接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。一些语言支持所谓的“多重继承“,即一个类派生自多个类。使用多重继承的优点是有争议的:一方面可以使用多重继承编写非常复杂、但很紧凑的代码。另一方面,使用多重实现继承的代码很难理解和调试。还有一种额外的多重继承,它是比较有争议的一个,它既可以用写出非常复杂的代码但同时也很难调试这些代码。而C#不支持多重继承,但又允许允许类型派生自多个接口—多重接口继承。
 三、泛型如果要传递方法,就必须把方法的细节封装在一种新类型的对象中,即委托。委托只是一种特殊类型的对象,其特殊之处在于定义的所有对象都包含数据,而委托包含的只是一个或多个方法的地址。使用委托时也需要经过这两个步骤:首先必须定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托表示哪种类型的方法。然后必须创建该委托的一个或多个实例。编译器在后台将创建表示该委托的一个类。因为定义委托基本上是定义一个新类,所以可以在定义类的任何相同地方定义委托。就是说可以在另一个类的内部定义,也可以在任何类的外部定义,还可以在名称空间中把委托定义为顶层对象。委托的一个特征是它们的类型是安全的,可以确保被调用的方法的签名是正确的,不管是什么类型对象上都能调用,即使这个方法是静态或者动态。如果泛型类型用out关键字标注,泛型接口就是协变的。这也意味着返回类型只能是T。接口Index与类型T是协变的,并从个只读索引器中返回这个类型。如果泛型类型用in关键字标注,泛型接口就是抗变的。这样接口只能把泛型类型T用作其方法的输入。
 四、委托如果要传递方法,就必须把方法的细节封装在一种新类型的对象中,即委托。委托只是一种特殊类型的对象,其特殊之处在于定义的所有对象都包含数据,而委托包含的只是一个或多个方法的地址。使用委托时也需要经过这两个步骤:首先必须定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托表示哪种类型的方法。然后必须创建该委托的一个或多个实例。编译器在后台将创建表示该委托的一个类。因为定义委托基本上是定义一个新类,所以可以在定义类的任何相同地方定义委托。就是说可以在另一个类的内部定义,也可以在任何类的外部定义,还可以在名称空间中把委托定义为顶层对象。委托的一个特征是它们的类型是安全的,可以确保被调用的方法的签名是正确的,不管是什么类型对象上都能调用,即使这个方法是静态或者动态。调用委托的次数与调用方法的次数相同。如果要调用多个方法,就需要多次显式调用这个委托。但是委托也可以包含多个方法,这种委托称为多播委托。如果调用多播委托,就可以按顺序连续调用多个方法。为此委托的签名就必须返同void,否则就只能得到委托调用的最后一个方法的结果。
 五、正则表达式正则表达式作为小型技术领域的一部分在各种程序中都有着难以置信的作用。正则表达式可以看成一种有特定功能的小型编程语言:在大的字符串表达式中定位一个子字符串。正则表达式语言是一种专门用于字符串处理的语言。它包含两个功能:一组用于标识字符类型的转义代码。你可能很熟悉DOS表达式中的*字符表示任意子字符串,正则表达式使用与*类似的许多序列来表示“任意一个字符”、“一个单词的中断”和“一个可选的字符”等。正则表达式字符串初看起来像是一般的字符串,其中包含了转义序列和有特定含义的其他字符。如果要搜索其中一个元字符,就可以通过带有反斜杠的相应转义字符来表示。可以把替换的字符放在方括号中,请求匹配包含这些字符。在正则表达式模式中,也可以把任何字符组合起来,像处理单个字符那样处理它们。一个系统在搜索操作中,它把子字符串和中间结果的各个部分组合起来。使用正则表达式,可以对字符串执行许多复杂而高级的操作。如:1、识别(可以是标记或删除)字符串中所有重复的单词2、把所有单词都转换为标题格式3、把长于3个字符的所有单词都转换为标题格式4、确保句子有正确的大写形式5、区分UR的各个元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值