标签:局部变量 剖析 block obj public gem 数据存储 内容 imageview
ValueType
,ValueType
又继承自System.Object
;而引用类型则直接继承于System.Object
;GC
控制,作用域结束时,值类型会被操作系统自行释放null
值,它会被默认初始化为该值类型的默认值;而引用类型默认会初始化为null
值,表示不指向托管堆中的任何地址;对值为null
的引用类型的任何操作都会引发NullRefernceException
异常c
变量)的值类型,则仍然会被分配到线程堆栈中. //引用类型嵌套定义值类型的情况
public class NestedValueTypeInRef
{
//valuetype作为引用类型的一部分被分配到托管堆上
private int valuetype = 3;
public void method()
{
//C被分配到线程堆栈上
char c = 'c';
}
}
class Program
{
static void Main(string[] args)
{
NestedValueTypeInRef typeInRef = new NestedValueTypeInRef();
}
}
public class TestClass
{
public int x;
public int y;
}
class Program
{
//值类型嵌套定义引用类型的情况
public struct NestedRefTypeInValue
{
//结构体字段,注意,结构中的字段不能被初始化
private TestClass classinValuetype;
//结构体中的构造函数,注意,结构体中不能定义无参的构造函数
public NestedRefTypeInValue(TestClass t)
{
if (t==null)
{
throw new ArgumentNullException("t");
}
classinValuetype = t;
classinValuetype.x = 3;
classinValuetype.x = 5;
}
}
static void Main(string[] args)
{
//值类型变量
NestedRefTypeInValue typeInValue = new NestedRefTypeInValue(new TestClass());
}
}
值类型转换为引用类型称为装箱,引用类型转换为值类型称为拆箱
(type)(变量,或函数);
通过is
和as
运算符进行安全的类型转换;
int i=3;
//装箱
object o=i;
//拆箱
int y=(int)o;
null
,如果为null
则抛出异常;反之则检查变量是否和拆箱后的类型是同一类型,若为否,会导致InvalidCasetException
异常;参数可分为形参和实参两种.形参指的是被调用方法中的参数,也就是方法中定义的参数;实参指的是调用方法时,传递给对应参数的值;
static void Main(string[] args)
{
int addNum=1;
//addNum 就是实参
Add(addNum);
}
//addnum就是形参
private static void Add(int addnum)
{
........
}
string
具有不可变性,因此不会改变; 这是一特殊情况ref
,out
关键字来实现参数的传递都是引用传递标签:局部变量 剖析 block obj public gem 数据存储 内容 imageview
原文地址:https://www.cnblogs.com/youMo/p/10360404.html