01.对象和类型

本文探讨了面向对象编程中的类和结构,详细介绍了它们的相似点和不同点,包括类的构造函数、匿名类型,以及结构的构造函数。类作为引用类型支持继承,而结构作为值类型存储在栈上且不支持继承。此外,文章还提到了方法的重载、扩展方法等概念。
摘要由CSDN通过智能技术生成

1.类和结构

类和结构都是创建对象的模板,每个对象都包含数据以及处理数据和访问数据的方法,例如:有一个Customer的顾客类,可有顾客ID/顾客姓名/顾客地址,以及顾客的其他信息,还可以定义处理这些数据的功能,接着就可以实例化这个类,表示具体的某个顾客,用来给这些顾客的字段赋值,并使用其功能。
结构不同于类,类是引用类型,结构是值类型,是存放在栈(Stack)上的,另外结构不支持继承,较小的数据结构可使用结构。
不同点:

  1. 类引用类型,结构是值类型。
  2. 定义语法的关键字不同,类class和结构struct。
  3. 存储的地方不一样,结构在栈(Stack)存储,类在堆(heap)中存储。
  4. 类支持继承,结构不支持继承。

相同点:

  1. 都使用new关键字来声明实例,并对其进行初始化

类的成员: 字段 常量 方法 属性 构造函数 索引器 运算符 事件 析构函数 类型

1. 方法

  1. 方法的重载:

    1. 方法名称不同
    2. 方法的参数个数不同
    3. 方法的参数类型不同
  2. 方法的参数

    1. 命名的参数
    2. 可选参数(可选参数必须是最后一个)
    3. 可变参数(parmas type[] )

2. 构造函数

  1. 构造函数也是可以重载的
  2. readonly 字段只能在构造函数中初始化

3. 匿名类型

  1. var和new关键字组合使用的时候就形成了匿名类型,例如:
var captain=new { FirstName = "xxx",LastName="xxx"  }

结构

结构虽然是值类型但是和类使用没什么区别,注意关键点就行了,例如:new运算符并不是在堆中分配空间,而是只调用的构造函数,并初始化了字段。结构派生自system.valueType,而System.ValueType又派生自System.Object。

1. 结构的构造函数

结构的构造函数和类的构造函数相同,同样可以重写默认的构造函数。

扩展方法

定义一个静态类,并在类名后面加上Extension,定义静态方法,并在形参前加this,例如:

 public static class StringExtension
 {
     public static int ToInt32(this string str)
      {
         try
         {
              return Convert.ToInt32(str);
         }
         catch (Exception e)
         {
              return 0;
         } 
      }
}
string str = "321";
var number = StringExtension.ToInt32(str);
Console.WriteLine(number);
number = str.ToInt32();
Console.WriteLine(number);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值