9个回答
展开全部
本质:
-值类型的变量本身就存储着“实例”的内容,即变量的内容就是值本身,有几个变量就有几份值;
-而引用类型的变量,存储的是该引用实例在内存中的首地址,即变量的内容只是个内存地址,多个变量可以指向同一个实例。
例子:
int
a
=
1;
int
b
=
a;
此时在内存中有两个值,a和b的值都是1,a
=
3后,b仍然是1。
TextBox
a
=
new
TextBox();
TextBox
b
=
a;
a.Text
=
"asdfsdf";
MessageBox.Show(b.Text);
可以发现b.Text也是"asdfsdf",因为a和b都指向同一个TextBox实例,所以反过来b.Text="sss"后,a.Text也会是"sss"
-值类型的变量本身就存储着“实例”的内容,即变量的内容就是值本身,有几个变量就有几份值;
-而引用类型的变量,存储的是该引用实例在内存中的首地址,即变量的内容只是个内存地址,多个变量可以指向同一个实例。
例子:
int
a
=
1;
int
b
=
a;
此时在内存中有两个值,a和b的值都是1,a
=
3后,b仍然是1。
TextBox
a
=
new
TextBox();
TextBox
b
=
a;
a.Text
=
"asdfsdf";
MessageBox.Show(b.Text);
可以发现b.Text也是"asdfsdf",因为a和b都指向同一个TextBox实例,所以反过来b.Text="sss"后,a.Text也会是"sss"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
值类型,传值, 不改变实参的值 内存中存的是数据
像整数类型,浮点类型,字符类型,布尔类型,结构类型等都是值类型
引用类型是传地址, 改变实参的值 ,内存中存的是数据的内存地址
像数组,字符串都是引用类型
值类型用 栈存储
引用类型 用 堆存储
像整数类型,浮点类型,字符类型,布尔类型,结构类型等都是值类型
引用类型是传地址, 改变实参的值 ,内存中存的是数据的内存地址
像数组,字符串都是引用类型
值类型用 栈存储
引用类型 用 堆存储
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单说 像整数类型 布尔类型 字符类型 实数类型(浮点型、十进制类型)这样的都是 值类型 当然还包括结构类型和枚举类型也是值类型
而像类呀 对象啊 接口啊 数组 委托这些都是引用类型
而像类呀 对象啊 接口啊 数组 委托这些都是引用类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
示例 1:通过值传递值类型
下面的示例演示通过值传递值类型参数。通过值将变量 myInt 传递给方法 SquareIt。方法内发生的任何更改对变量的原始值无任何影响。
using System;
class PassingValByVal{
static void SquareIt(int x)
{
x *= x;
Console.WriteLine("The value inside the method: {0}", x); }
public static void Main()
{
int myInt = 5;
Console.WriteLine("The value before calling the method: {0}", myInt);
SquareIt(myInt);
Console.WriteLine("The value after calling the method: {0}", myInt);
}
}
输出
The value before calling the method: 5
The value inside the method: 25
The value after calling the method: 5
示例 2:通过引用传递值类型
下面的示例除使用 ref 关键字传递参数以外,其余与“示例 1”相同。参数的值在调用方法后发生更改。
using System;
class PassingValByRef{
static void SquareIt(ref int x)
{
x *= x;
Console.WriteLine("The value inside the method: {0}", x); }
public static void Main()
{
int myInt = 5;
Console.WriteLine("The value before calling the method: {0}", myInt);
SquareIt(ref myInt);
Console.WriteLine("The value after calling the method: {0}", myInt);
}
}
输出
The value before calling the method: 5
The value inside the method: 25
The value after calling the method: 25
看完你就会明白滴!
下面的示例演示通过值传递值类型参数。通过值将变量 myInt 传递给方法 SquareIt。方法内发生的任何更改对变量的原始值无任何影响。
using System;
class PassingValByVal{
static void SquareIt(int x)
{
x *= x;
Console.WriteLine("The value inside the method: {0}", x); }
public static void Main()
{
int myInt = 5;
Console.WriteLine("The value before calling the method: {0}", myInt);
SquareIt(myInt);
Console.WriteLine("The value after calling the method: {0}", myInt);
}
}
输出
The value before calling the method: 5
The value inside the method: 25
The value after calling the method: 5
示例 2:通过引用传递值类型
下面的示例除使用 ref 关键字传递参数以外,其余与“示例 1”相同。参数的值在调用方法后发生更改。
using System;
class PassingValByRef{
static void SquareIt(ref int x)
{
x *= x;
Console.WriteLine("The value inside the method: {0}", x); }
public static void Main()
{
int myInt = 5;
Console.WriteLine("The value before calling the method: {0}", myInt);
SquareIt(ref myInt);
Console.WriteLine("The value after calling the method: {0}", myInt);
}
}
输出
The value before calling the method: 5
The value inside the method: 25
The value after calling the method: 25
看完你就会明白滴!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询