# 值类型和引用类型

  1. 值类型:int char double float short byte bool enum struct decimal enum
  2. 引用类型 string(特殊 值类型性质) 数值 类 接口 委托 object
# 值传递和引用传递(ref)
  1. 值传递:栈中内容
  2. 引用传递(ref):栈的地址
# params:
可变参数,放在末尾 public void test(int x,params int[] arges)
1
# out:
public void test(out int x)
{
1.只能赋值,不能取值
2.方式执行完毕之前必须赋值
}
1
2
3
4
5
# 拆箱与装箱
拆箱:引用类型转值类型   int n=(int)O
装箱:值类型转引用类型   object  o=n
注:装的时候那什么装,拆的时候就拿什么拆
1
2
3
# 对象判断
object.referenceEquals()判断是否是同一个对象(堆中)
equals,== 在string相等就true
object中和referenceEquals一样
1
2
3
# 类型转换
隐式 把学生转人
显示 把人转学生(强制转换)int m=(int)double 
if(is){as}
1
2
3
# 弱引用
person p=new preson
weakreference wr=new weakreference(p)
p=null
object o =wr.isAlive
if(o!=null)
{
person p1=o as person
}
1
2
3
4
5
6
7
8
# operator、explicit与implicit
operator:承载内置转换
explicit(显示转换)和implicit(隐式转换)
public static implicit operator bool(ValidationResult validation)
{
    return validation == Success;
}
//在其中一个入参或者回参要在这个参数类中,如
class Digit
{
    public static implicit operator double(Digit d)
    {
        return d;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14