C#基础——面向对象的继承

本文介绍了面向对象的基础概念,包括对象的创建、构造函数、继承等,并详细讲解了值类型与引用类型的存储区别。此外,还深入探讨了字符串的不可变性、字符串操作技巧及字符串构建器的高效使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 对面向对象基础概念的一些总结,以后有空会写一个面向对象基础的文章。

(1)Person  LaoLi=new Person();     //这里的new开辟了内存空间,创建了对象,同时还调用了构造函数。

(2)构造函数:

public Student(string name,int age,char gender)
{
    this.Name=name;
    this.Age=age;
    this.Gender=gender;
}
public Student(string name,char gender):this(name,0,gender)
{
    
}

(3)值类型和引用类型,在内存上存储地方不一样。

值类型:int,double,decimal,struct,enum;              存储在栈

引用类型:string,自定义class,数组                     存储在堆,同时栈中也会有存一个堆的地址。

(4)字符串的不可变性

给一个字符串赋值了,不是不可以不改变值,而是改变值以后,在堆中开辟新的空间去存值,栈中存的地址也会改变。

GC(garbage collection)会将没有指向的堆,回收。

于是,大量字符串的操作就要用到stringbuilder

StringBuilder sb=new StringBuilder();
string str=null;
Stopwatch sw=new Stopwatch();
sw.Start();
for(int i=0;i<1000;i++)
{
str+=i;            //很慢,因为要一直开空间
sb.Append(i);      //很快,因为一直用的同一个内存,Append就是往这里面增加数
}
sw.Stop();
string a=sb.ToString();//最后使用转化为字符串
Console.WriteLine(sw.Elapsed);

(5)字符串常用方法

.ToUpper();//大写

.ToLower();//小写

stri1.Equals(str2,StringComparison.OrdinalIgnoreCase)//忽略大小写比较

(6)去除字符串中无意义字符

string s="a b c +   ,   d";
char[] c={' ','+',','};
string[] str=s.Split(c,StringSplitOptions.RemoveEmptyEntries);//不写后面的一串,就是将无意义字符变为空,但是还是占了位置
string[] str=s.Split(new char[]{' ','+',','},StringSplitOptions.RemoveEmptyEntries);

(7)字符串转char类型数组

char[] c=str.ToCharArray();

 

2.继承

(1)Person是父类,Stuent是子类。

Person如果写了构造函数,会覆盖空的构造函数。这个时候要么,给Person再写一个空的构造函数,要么用下面的语法继承

public Student(string name,int age,char gender,int id)
:base(name,age,gender)
{

this.Id=id;
}

(2)Person是父类,Stuent是子类。

都有一个SayHello的方法,子类是调用不到父类的这个重名方法的。

public void SayHello();

如果要在子类故意隐藏父类这个方法,使用 new:    public  new void SayHello();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值