可空类型

类型后面+?就可以声明可空类型了,可空类型和普通的类型是两种类型,赋值时需要进行类型转换

例如

double? num=null;

面向对象

三大特征

封装

打包,便于管理

继承

拿来主义,优势:解决代码冗余,特征:单根性(c#和java类语言的特征),继承性,javascript可以多继承,定义:将一个类库作为原始模版,在其上扩展另外的类库

构造方法的执行顺序:子类默认调用父类的构造方法

new对象的时候分2部分

1.New,创建对象,在内存开辟空间
2.调用构造方法,初始化数据,(先调用父类的构造方法,再调用自己的构造方法)

子类中的base()代表其父类的默认的无参的构造方法

如果父类没有无参的构造方法,只有有参数的构造方法,子类调用时

class Student:Person
public Student (string name):base(name)
{
}

里式转换原则

子类可以赋值给父类对象

父类对象可以强制转化为对应的子类对象

        class MyBase{}

        class MyClass1:MyBase{}

        class MyClass2:MyBase{}

        //里式第一条
    MyBase m1=new MyClass1();
    //里式第二条
    MyClass1 m2=(MyClass1)m1;
    //is,返回是bool类型
    m1 is MyClass1;
    //as ,转换成功则赋值,转换失败则为null
    MyClass1 m4=m1 as MyClass1;

多态

对象在调用同一个方法的时候表现出来的多种状态

父类统一调用,子类具体实现(重写基类方法具体实现)

隐藏基类方法实现多态

口诀:New则隐藏,over重写;隐藏看类型,重写只管新

开启新的进程打开指定路径的文件。不用管文件格式,系统会默认使用对应的程序打开文件

System.Diagnostics.Process.Start(“文件全路径”);

接口语法

[访问修饰符] interface I接口名
{
    接口成员
}

public interface Idable
{
    void Da();
}

// 实现接口
abstract class CCC:Idable   // 继承自接口, 实现接口
{
    // 假定没有接口存在,但是需要一个名字为Da,没有返回值,没有参数的方法
    public abstract void Da();
}

this和base

this:当前对象

base:子类中代表父类对象。

一个类的方法后跟:base(),代表调用这个方法前先调用父类的构造方法

public class():base()
{

}

7、 String 类型

-> 构造方法
    new string(char[])
    new string(char, int)
-> 常用属性
    索引(Chars)   str[3]
    Length
-> 常用方法
    增:
        构造方法
        string Insert(int startindex, string value);//给下标为startindexd的位置添加value值
        string string.Join(string splitStr, string[]);//用splitStr, 把字符串数组连接起来
        string Replace(string, string);   // "123".Replace("2", "2222");
        运算符+
        string string.Concat(string[]); // string.Join("", list);//把字符串数组的每个元素连接起来

        string PadLeft(int, char);  
        // 在字符串的左边填充一定空格或字符char,直到字符长度为int所表示的长多一样为止
        string PadRight(int, char);
    删:
        string Remove(int startIndex, int count); // "012345".Remove(3,2); => "0125"
        string Substring(int startIndex, int count); // "012345".Substring(3,2); => "34"
        string Trim(params char[]);
        string TrimStart();
        string TrimEnd();
    改
        首先ToCharArray(),在Join或Concat或构造函数
        string ToUpper();
        string ToLower();
    查
        bool Contains(string);
        int IndexOf(char, int);
        int LastIndexOf(char, int); // 获得文件名:"C:\123\456\789.mp3";
        int IndexOfAny(char[], int); // 找出字符串中所有的e和a
        int LastIndexOfAny(...);
        bool StartsWith(string);
        bool EndsWith(string);
    其他
        bool string.IsNullOrEmpty(string)
        string[] Split(char[], StringSplitOptions.RemoveEmptyEntries); //entry
        // "I  have  a  dream".Split(' ');
        bool Equals(string);
        bool string.Equals(string, string);
        int string.Compare(string s1, string s2);
            s1 > s2         1
            s1 = s2         0
            s1 < s2         -1
        string string.Format(string, object[]);

8、 StringBuilder
-> 字符串不可变,长期拼接字符串性能较低
-> Stringbuilder
Append(string);
AppendLine(string);
AppendFormat(“{0}{1}{2}{3}”, 1, “23”, “ab”, true);
ToString();

//读取文件的所有行
string[] lines = File.ReadAllLines(“文件路径”, Encoding.Default);

posted on 2017-10-20 17:18  NE_STOP  阅读(0)  评论(0编辑  收藏  举报  来源