重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C#语言中数据类型可分为两大类:值类型和引用类型。
创新互联-专业网站定制、快速模板网站建设、高性价比龙湖网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙湖网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙湖地区。费用合理售后完善,十载实体公司更值得信赖。
值类型包括:基本数据类型(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();
}
Structure是值类型,classe是引用类型 Structure用栈来分配; classe用堆来分配 structure的成员默认情况下是公共的,而Class的成员变量和常量默认情况下是私有的而其它成员默认情况下是公共的.这与VB6是相兼容的。 structure必须至少有一个非共享的成员变量或事件成员,class可以完全是空的. Structure的成员不能声明成Protected; class成员可以. 一个structure过程只能在它是一个Shared Sub时才能handle events而且只能通过AddHandler语句;而任何class过程都可以handle events,既可以用Handles关键字或 AddHandler语句。 Structure variable declarations cannot specify initializers, the New keyword, or initial sizes for arrays; class variable declarations can. Structure继承自ValueType类,不能从其它任何类型继承; classes可以从任何不是ValueType的类继承 Structure不能继承而Class可以 Structure从来不析构terminated因此common language runtime (CLR)从来不调用它的Finalize方法,classe由垃圾回收器进行析构, 当没有任何对该类的引用时调用它的Finalize方法 structure 不需要一个构造函数,而Class需要 Structure只能有带参数的非共享的构造函数; classes 可以有带或不带参数的构造函数. 每个Structure都有一个默认的不带参数的构造函数以对其成员进行初始化,你可以重新定义该函数
在项目A里添加引用,在“添加引用”对话框里找到项目B就可以了。也可以先把项目B生成dll文件,然后在项目A中添加对这个dll文件的引用。
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的值而复制的一个变量。
Private Function ReadFile(ByRef a As String) As String
a = "bian"
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As String = "yuanlai"
ReadFile(a)
''想要的结果就是在这里使用a的值是"bian"
MsgBox(a)
End Sub
===================
以上就可以,不知道你“ByRef a As b”的b是什么东西
以class2为例,如果你只需要一个class2实例,那么把它在class1成员中声明为共享成员即可。
Shared c2 As New Class2()
然后调用它的函数,
c2.func()
如果class2的这个函数不依赖于class2实例,那么直接将这个函数用Shared声明,
Public Shared Function func() As xxx
'xxxxx
End Function
然后在class1中引入,
Imports class2
直接调用即可。
func()
我想第二种更符合你的情况。