VBnet 类与类赋值?

作者&投稿:勾澜 (若有异议请与网页底部的电邮联系)
~ 在VB.NET中,类(Class)是引用类型。当你写 A = B 时,实际上你是使A引用B对象的内存位置,所以他们都指向同一个对象。因此,当你更改 A 中的任何属性或方法时,由于 A 和 B 指向同一个内存位置,B 也会受到相同的更改。
如果你想让 A 和 B 保持独立,并且在赋值后,更改其中一个不会影响另一个,你需要进行深度复制(Deep Copy)。
为了实现这个,通常你需要在类中提供一个克隆(Clone)或复制(Copy)的方法,这个方法会创建一个新的对象,并手动复制原始对象的每一个属性。这样,新对象是原始对象的一个完整副本,但在内存中占用不同的位置。
这里有一个简单的例子来实现这个
Public Class Lei Public Property SomeValue As Integer

' 添加一个Copy方法来创建这个类的新实例,并复制属性
Public Function Copy() As Lei Dim newLei As New Lei()
newLei.SomeValue = Me.SomeValue Return newLei End FunctionEnd ClassSub Main() Dim A As New Lei()
A.SomeValue = 5

Dim B As Lei = A.Copy() ' 使用Copy方法,而不是直接赋值
B.SomeValue = 10

Console.WriteLine(A.SomeValue) ' 输出 5
Console.WriteLine(B.SomeValue) ' 输出 10End Sub
在上述代码中,尽管 A 是 B 的基础,但更改 B 不会影响 A,反之亦然。


南山区15330178338: vb.net声明对象用new关键字与不用关键字new的区别 -
晋看卡理: 顾名思义,new就是给变量赋值一个新的对象 dim不加new就是说变量是XX类型的,但它不是一个真正的XX对象.如果给这个变量赋值的话,实际上就是把某一对象的指针存到变量里,它依旧不是一个对象 一个普通的类,里面有一些数据,你要弄一个对象的话,需要初始化所有类中的数据并调用构造函数.这时候我们就用new了.如果你不用new,然后直接使用的话,会引发null异常 当然上面的讨论不包括Integer、String、Long这样的数值类型,这些不能用new

南山区15330178338: VB.net请高帮我一下
晋看卡理: VB.NET不是不能对ME进行赋值,而是LZ的ME没有指定对象,但最好不要直接对ME进行赋值,这样容易出现错误. 不知LZ的USERNAME、USERPW是连接数据库吗?如果是可以采用下面的方法.Private m_ConnStr As String = "User ID=...

南山区15330178338: vb.net Microsoft.Office.Interop.Excel.Range赋值问题 -
晋看卡理: 使用前先实例化.第三行:Dim XlList As Microsoft.Office.Interop.Excel.Range 改为:Dim XlList As Microsoft.Office.Interop.Excel.Range = New Microsoft.Office.Interop.Excel.Range

南山区15330178338: .Net中接口的作用?接口和类的区别?结构的作用?结构和类的区别? 简短的解释一下 谢谢 -
晋看卡理: 接口其实也是类.只不过接口不包括方法的实现.接口在IL中查看分析最终还是转换成了抽象类.接口只是做为一个约定来规范化开发. 结构和类,看下下面的一个例子就明白了. 一.类与结构的示例比较: 结构示例: public struct Person { ...

南山区15330178338: .NET中类和结构有什么不同
晋看卡理: 结构和类具有大体的语法,但是结构受到的限制比类要多.结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数.结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值.申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用.与类不同,结构的实例化可以不使用New关键字.类可以实现接口.

南山区15330178338: 、vb的赋值语句既可以给 - -------赋值,也可给对象的--------赋值. -
晋看卡理: vb的赋值语句既可以给____变量____赋值,也可给对象的____属性____赋值.

南山区15330178338: vb.net中自动实现的属性和成员变量分别用于什么情况? -
晋看卡理: 是的,似乎是多此一举,但.net的核心里就区分了“属性”与“字段”,有很多功能只能是属性,比如绑定控件,只会显示属性,而不会显示字段.因此很多代码里声明自动属性纯粹是为了属性而属性.至于为什么如此重视,就涉及到面向对象思想里的封装性啥的了,自己体会.

南山区15330178338: 面向对象程序设计中类与类的关系都有哪几种 -
晋看卡理: 什么是类: 具有相同或相似性质的对象的抽象就是类. 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性. 类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述.类的特性: 1、封装:封装是面向对象的特征之一,是对象和类概念的主要特性 2、继承:面向对象编程(OOP)的一个主要功能就是继承.继承是指这样一种能力:可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展. 3、多态:多态性是允许将父对象设置成和一个或更多的子对象相等的技术,赋值之后父对象就可以根据当前的赋值给它的子对象的特性以不同的方式运作.简单地说,就是一句话:允许将子类类型运行的指针赋值给父类类型的指针.

南山区15330178338: vb 如何给静态变量赋初值 -
晋看卡理: vb中不能在变量声明时赋默认值以外的初值,想要给静态变量赋初值,必须增加一个标志变量,如:Sub ss() Static i As Integer, f As Boolean If Not f Then i = 3: f = True '运行代码 End Sub

南山区15330178338: 在VBScript中,有哪些赋值操作符 -
晋看卡理: 赋值运算符 (=) 赋值给一个变量或. variable = value 参数 variable 任何变量或可写的属性. value 任何数值或字符串文字、常数、或表达式. 说明 等号左边的名称可以是一个简单的标量变量或数组的一个元素.等号左边的属性仅可以是那些...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网