C#/.net学习-----C#基础知识-对象和类型

来源:互联网 发布:vr编辑软件 编辑:程序博客网 时间:2024/06/03 14:52
对象和类型和继承
一、类和结构的区别
类:
类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存
类有构造和析构函数
类可以继承和被继承


结构:
结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
结构没有构造函数,但可以添加。结构没有析构函数
结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口二、类成员


主要的区别是内存分配,继承上的区别
(注:面试题类与结构的区别)
二、类成员
1,数据成员
   数据成员:1:分为静态与非静态 static
             2:字段 常量(关键字const) 事件 这么说吧  就是一个Person类,里面有姓名,性别,年龄等,这些姓名什么的就是数据成员
2,函数成员
   首先说明一个问题,学了几年的编程了,大家谈到函数与方法,第一印象就是函数=方法,这在C#中是不对的,正确的说法是C#中的函数成员包括方法外,还有类或者结构的一些非数据成员,比如所引起,运算符,构造函数,析构函数等,甚至还有属性,这个问题大家一定要搞清
   (1)方法
    a:声明
    [midifiers] return_type MethodName
    {
        //Method body
     }
     b:调用
     main()
    {
       method();
    }
     method();
     c:传参
out:输出,可以不用写return 就是直接返回结果
ref:使用前必须对其赋值才可以使用
params:用法必须放在结尾,这么说吧 ,params表示的是这些数从任意一个数到结尾的数,因此必须放到后面
d:重载
方法名相同,参数类型,参数个数不同就是重载
   (2)属性
简单一句话,见到get()set()就是属性
get:只读
set:只写
二者可以同时存在也可以存在其中之一
--------------------------------
private string name;
public string Name
{
    get
{
   return Name;//只读
}
}
--------------------------------
public string Name
{
    get
{
   return _name;
}
private set
{
  _name=value;
}
}
这个例子主要说明下访问级别的问题,如果get级别为protected 则编译就会出现错误
---------------------------------
public string Name
{
   get;set;//自动实现属性

---------------------------------- 
(3)构造函数
首先一点,没有返回值,构造函数可以重载,当然不写构造函数时,系统会自动生成构造函数,如果写了有参的构造函数,编译器就不会提供默认的构造函数了

public class MyClass
{
   public MyClass()
{
}
public MyClass(int number)
{
}
}
注:只读字段
    关键字:readonly,比const要灵活的多,const定义的为常量,不能更改,并且只能是静态的字段,而readonly可以是静态字段也可以是实例字段
三、匿名类型
    需要使用 var 和 new 创建匿名类型
例如:
var caption=new {FirstName=“A”;MiddleName=“B”;LastName=“C”;}
四、结构
    关键字:struct
结构与继承:结构不能继承,但是因为有个System.Object爸比,结构是可以重写的,比如.ToString()
结构的构造函数:记住一点,必须有参数!!!结构是值类型
五、Object类
    所有的.net类都派生自Object类,当然如果我们使用一个类的时候,没有做到引用是哪个父类的时候,系统会默认使用Object类,例如:我们使用结构的时候,其实结构是间接的使用的,结构的父类是System.ValueType,而System.ValueType的父类是Object,孙子-儿子-爷爷,这么说大家应该就会明白了
方法:
1)ToString()方法:获取对象字符串表示的一种快捷方式
2)GetHashCode()方法:对象是放在名为映射的数据字典中,可以使用这个方法
3)Equals()ReferenceEquals()方法:对象的比较相同的方法
4)Finalize()方法:应该是情理内存的一种方法
5)GetType()方法:获取信息,类型,方法,属性等
6)MemberwiseClone()方法:克隆懂了吧 很单纯的方法
六、扩展方法
https://msdn.microsoft.com/zh-cn/library/bb383977.aspx
0 0
原创粉丝点击