c#面向对象2--构造函数/new/this/析构函数/属性只读/namespace/值类型引用类型/字符串

1.构造函数

  • 类名首字母大写
  • 构造函数:可以用来创建对象,并在构造函数中对对象进行初始化(简化初始化过程--给对象的每个属性赋值);构造函数可以有重载;类本身会有一个默认的、无参的构造函数,当你写了一个(有参或者无参的构造函数时),默认的无参的构造函数都被干掉了;
  • 构造函数是一个特殊的方法
    1)构造函数没有返回值,连void也没有
    2)构造函数名必须与类名一致
    3)构造函数的访问修饰符必须是public(若是private,则创建对象时无法对对象进行初始化)
    4)创建对象的时候会执行构造函数


    没有构造函数时对对象初始化
有构造函数--构造函数写法

有构造函数--使用构造函数初始化对象

2.new关键字

  • new关键字
    Person zsPerson = new Person();
    new帮助我们做了三件事:
    1)在内存中开辟一块空间
    2)在开辟的空间中创建对象
    3)调用对象的构造函数初始化对象

3.this关键字

  • this关键字
    1)代表当前类的对象
    2)在类当中显示地调用本类的构造函数(:this)
    有参数的地方直接用参数(如name,chinese等),没有参数的地方赋默认的初值(如0,‘男’)


    在类当中显示地调用本类的构造函数具体写法

    3)使用this可以区分局部变量和属性


    使用this可以区分局部变量和属性

4.析构函数

  • 析构函数
    格式:~析构函数名(){ }
    1)当程序结束时,析构函数才执行,用于帮助我们释放资源(c#使用了GC垃圾回收器默认帮我们释放资源)
    2)如果想立刻释放资源,自己显示的写一个析构函数

5.属性只读

实战:属性若是只读不可写的,那么通过字段来改变参数的值,传入参数可用构造函数


实战

6.命名空间

  • 命名空间
    缺少命名空间时引用命名空间快捷键 : ALT+SHIFT+F10然后敲回车;
  • 在一个项目中引用另一个项目的类
    1)添加引用
    2)引用命名空间


    第一步.1:右键引用--点击“添加引用”

    第一步.2:引用项目“01复习”,所以在前面点勾,点击确定

    第二步:添加命名空间--using 01复习

7.值类型和引用类型

  • 值类型和引用类型:计算机中变量大致可以分为两类,数值型变量和非数值型的变量;对c#而言,分为值类型和引用类型两种;
  • 值类型和引用类型的区别:
    1)值类型和引用类型在内存上存储的地方不一致;
    2)传递值类型和引用类型的方式不一样,值类型称之为值传递,引用类型称之为引用传递;
    3)值类型存储在内存的栈中,引用类型存储在内存的堆中;引用类型也在栈上开辟了空间存储堆的地址;


    值传递和引用传递的存储区别
  • 值类型:int,double,bool,decimal,char,struct,enum
  • 引用类型:string,数组,自定义类和我们使用的所有类

8.字符串及相关函数

  • 字符串
    特性:
    1)字符串的不可变性,如下图所示(当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值)
    注:当程序结束时,如果发现内存中有空间没有任何东西指向它(“如下图所示的“”张三”),此空间会被GC垃圾回收器删除;


    字符串不可变性 -- “张三”没有消失,“10”消失了

    两个字符串内容相同时只开辟一块空间

    验证上图 -- 1.打开“即时”

    验证上图 -- 2.在“即时”窗口里面写上“&s1”回车,返回栈地址和堆地址,发现堆地址相同

    2)可以将字符串看作是char类型的一个只读数组(即可以通过下标去访问字符串中的某一个元素)
    ToCharArray():将字符串转换为char数组;
    new String(char[] chs):能够将char数组转换为字符串;


    为啥把string当成char类型的只读数组 & 如何改变string里面某个字符的值(方法一)

    如何改变string里面某个字符的值(方法二)
  • StringBuilder:综上所述,如果程序中进行大量的拼接会导致内存里垃圾很多,这是可以使用StringBuilder类


    (未使用StringBuilder)Stopwatch是一个计时器类

    (使用StringBuilder)与上图的不同用红线标注
  • 字符串的方法
    字符串.Length;是获取字符串长度;
    字符串.ToUpper();是将字符串转换成大写;
    字符串.ToLower();是将字符串转换成小写;
    字符串1.Equals(字符串2);的结果相当于字符串1 == 字符串2;

    填入一个枚举类型的参数StringComparison.OrdinalIgnoreCase就可以忽略大小写进行比较了

    字符串.Split();用来分割字符串,返回的是字符串类型的数组;
    使用Split()方法干掉不想要的字符后,被干掉的地方显示null

    注意:这里是string[]数组,所以会存在一项里面存多个字符(如下标为4的项存了“dfd”)
    如何让上图被干掉的地方不显示null,填入一个枚举类型的参数StringSplitOptions.RemoveEmptyEntries

    字符串.Contains();返回值是bool类型,判断一个字符串里是否包含()l里出现的字符;
    字符串.Replace(“被替换文字”,“替换文字”);返回一个字符串,用来替换字符串中的某些内容;
    字符串.Substring(截取字符串开始下标【,截取长度】);返回一个字符串,用于截取字符串中的一部分;
    字符串.StartsWith(“字符串”);返回bool类型的变量,判断一个字符串是不是以()里的内容开始;
    字符串.EndsWith(“字符串”);返回bool类型的变量,判断一个字符串是不是以()里的内容结束;
    字符串.IndexOf(“字符串”【,“搜索起始位置”】);返回int类型的变量,找到()里的字符在字符串里第一次出现的位置,找不到返回-1;
    注意:“搜索起始位置”是为了找到非第一次出现的字符所在位置,加了“搜索起始位置”这个选项后搜索时包括搜索的起始位置;
    字符串.LastIndexOf(“字符串”);返回int类型的变量,找到()里的字符在字符串里最后一次出现的位置;
    LastIndexOf+Substring组合使用,例如截取地址:
    LastIndexOf+Substring

注意: 1.@符号的作用:取消\在字符串和路径中的转义作用
2."\"代表一个\,第一个\是转义符
3.使用index+1,因为要截取的是\后面的内容
字符串.Trim(“字符串”);返回一个字符串,去掉字符串中所有的空格;
字符串.TrimEnd(“字符串”);返回一个字符串,去掉字符串中,尾部的空格;
字符串.TrimStart(“字符串”);返回一个字符串,去掉字符串中,头部的空格;
string.IsNullOrEmpty(“字符串”);返回一个bool类型的变量,null或者是“”都会返回true;
string.Join(“指定分隔字符”,“字符或字符数组”);返回一个字符串,将指定字符放到每个数组元素后面且最后一个元素后面不放;执行效果如下:

Join()

Join()

9.注意

  • 如何把txt文档读到控制台上
    1.先拿到控制台的路径string path = @"路径"
    2.使用File.ReadALLLines(path,Encoding.Default);读取文本中的所有内容,返回一个字符串数组;Encoding.Default是用来处理乱码;

  • 能用if-else解决的都可以用三元表达式来写;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容