我的c#的日常学习五
目录
1.@符号的作用
@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。
@(称作"逐字字符串")将转义字符(\)当作普通字符对待
2.方法重写又称方法覆盖
方法重写后,子类中的新方法将覆盖原有的方法
Public abstract void show ();
Public override void show();
重写要使用关键字 override virtual abstract 都可以被重写
子类可以重写父类中具有相同的方法名、返回类型和参数列表的某一方法。
3.抽象类(是一种规范)
用abstract修饰的类
特点 1.不能实例化对象 2.既可以写静态类的成员也可以写非静态的成员3.可以被其他的类继承
抽象方法 1.用abstract写的方法只有声明没有实现2.抽象方法只能写在抽象类中3.如果说一个非抽象类继承自一个抽象类,那么子类就必须实现父类中所有的抽象方法。
什么时候会使用抽象类
作用:用来约束所有子类的行为
补充:进阶多态
1.接口的引用可以指向实现类的对象
2.转型 由实现类类型转型为接口类型(向上转型) 由接口类型转换为实现类类型(向下转型)
3.接口名 I = new 类名 ();
4.接口(是一种规范)
1.接口也是可以继承的,并且是多继承
2.子接口有父接口的所有方法
3.一个类可以实现多个接口
4.Class 类名:接口名
1.如果一个类的:后面既有父类也有接口,一定是父类在前
2.用Interface描述接口
3.定义一个的接口规范
4.接口中的方法不是抽象方法
实现接口方法的注意事项
1.接口中的方法不能有访问权限修饰符
2.但在实现接口的类中一定要加public 不能使用override
3.抽象类实现接口,可以把接口方法实现为抽象方法
4.接口中的方法可以被实现为虚方法(virtual可以被重写)
示例
Interface USB {
Void charge (); //充电//这些方法都不是抽象方法
Void transportData();//数据传送
}
//让一个类去实现接口
Class mouse:USB{//语法
Public void charge();
Public void transportData();
}
补充:class前面加一个public具体是什么意思
要想在另一个类中访问到本类 需要对本类进行修饰 用到public访问修饰符
5.base
关键字:
用于从派生类中访问基类的成员
- 调用基类上已被其他方法重写的方法。
- 指定创建派生类实例时应调用的基类构造函数。
1.仅允许基类访问在构造函数、实例方法或实例属性访问器中进行。
2.从静态方法中使用 base
关键字是错误的。
3.所访问的基类是类声明中指定的基类。 例如,如果指定 class ClassB : ClassA
,则从 ClassB 访问 ClassA 的成员,而不考虑 ClassA 的基类。
6.正则表达式
作用:判断某一个字符串是否匹配一定的格式
注意 :正则表达式出错时没有代码提示因为 他们本身就是字符串
using System.Text.RegularExpressions;//使用正则表达式的时候必须加上
^: 匹配必须从字符串或一行的开头开始。
$: 匹配必须出现在字符串的末尾或出现在行或字符串末尾的 \n 之前。
[ ] :匹配一位字符,这一位字符可以是这个中括号中的任何一个 。
[1-9]: 这一位字符可取的范围是:[1,9]。
[a-z A-Z]: 这一位字符可取的范围是:[A,Z][a,z]。
[^1-9]: 这一位字符可以是除了[1,9]之间的任意字符。
+: 前面的一位字符连续出现了1次或者是多次。
*: 前面的一位字符连续出现了0次或者是多次。
?: 前面的一位字符连续出现了0次或者是1次。
{m}:前面的一位字符连续出现了m次。
{m,}:前面的一位字符连续出现了至少m次。
{m,n}:前面的一位字符出现了m到n次。
\d:等价于[0-9]
\D: 等价于[^0-9]
: 是通配符号
():用来表示一个分组
获取每一个分组的字符串
Match match =regex .match()//regex 带的方法
public static string checkphone(string phone)
{
string pattern = "^(1[34578]\\d)(\\d{4})(\\d{4})$";
Match match = Regex.Match(phone,pattern );//获取一个匹配的结果
GroupCollection grops = match.Groups;//获取所有的分组
string grops1 = grops[1].Value;
string grops2 = grops[2].Value;
return grops1 + "****" + grops2;