1.对象变量与对象本身是不同的,对象变量代表了对象真实数据在内存中的地址.
创新互联公司专注于兴山企业网站建设,响应式网站建设,成都做商城网站。兴山网站建设公司,为兴山等地区提供建站服务。全流程按需网站开发,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
打个比方,“对象变量”就象你家的地址,“对象本身”就象你家。
你不能说你家的地址(xx路xx号xx房)就是你家,但是可以通过这个地址而找到你家。
2.传值的参数本身是被复制一份的,但这并不意味着它所代表的对象也被复制一份.
有如下一个函数:
Public
Function
Do_delete(ByVal
ps_usr_id
As
String)
As
Boolean
你在调用时可能这样调用:
dim
strID
as
string
strID
=
"kknd001"
if
Do_delete(strID)
then.....
当程序执行到Do_delete函数体里面时ps_usr_id变量其实是按照StrID的值而复制的一个变量。
VB.NET可选参数的默认值必须是一个常数表达式。
过程定义中跟在可选参数后的每个参数也都必须是可选的。
下面的语法显示带VB.NET可选参数的过程声明:
Sub sub name(ByVal parameter 1 As data type 1,
Optional ByVal parameter 2 As data type 2 = default value)
调用带VB.NET可选参数的过程
过程在运行时无法检测到给定的参数是否已被省略,或者调用代码是否已显式提供默认值。如果需要弄清楚这一点,可以设置一个不可能的值作为默认值。下面的过程定义了可选参数 office,并测试其默认值 QJZ 以查看它在调用中是否已被省略:
Visual Basic
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters" End If
' Insert code to notify headquarters or specified office.
End Sub
如果可选参数是像 String 这样的引用类型,只要它不是该变量所预期的值,就可以使用 Nothing 作为默认值。
VB.NET可选参数和重载
定义带可选参数的过程的另一种方法是使用重载。如果有一个可选参数,可以定义过程的两个重载版本,一个接受此参数,另一个则不带参数。此方法随可选参数数目的增加而变得更复杂。然而,这样做的优点是可以完全确定调用程序是否提供了每个VB.NET可选参数。
C#语言中数据类型可分为两大类:值类型和引用类型。
值类型包括:基本数据类型(int,long,float,char,bool)、枚举类型(enum)、结构类型(struct);
引用类型包括: 类、接口、数组。
从你说的“a和b就像是一个对象”可以得出:a和 b都是引用类型。 为什么会有“a和b就像是一个对象”
这样感觉呢? 这是因为值类型变量和引用类型变量在内存中的存储方式不同,值类型变量是对数据的直接
拥有,而引用类型变量只是通过地址对数据的拥有(即:不是实际拥有)。 建议提问者首先了解两类变量
的存储机制,这样可以更好的帮助你理解问题。
下面给出代码,帮助你理解
// 值类型变量
public static void Main(string[] args)
{
int a = 5;
b = a; // 需要关键理解的地方
b = 10;
Console.WriteLine(b); // 打印输出 10
Console.ReadLine();
}
// 引用类型变量
public static void Main(string[] args)
{
Student stu1 = new Student();
Student stu2 = new Student();
stu1.Name = "周杰伦";
stu2 = stu1; // 需要关键理解的地方!!!
stu2.Name = "方文山";
Console.WriteLine(stu1.Name); // 打印输出 方文山
Console.ReadLine();
}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款