reference-type相关内容
C# 不允许结构派生自类,但所有 ValueTypes 都派生自 Object.这种区别在哪里? CLR 如何处理这个问题? 解决方案 C# 不允许结构派生自类 您的陈述不正确,因此您感到困惑.C# 确实 允许结构派生自类.所有结构都派生自同一个类 System.ValueType,后者派生自 System.Object.并且所有枚举都派生自 System.Enum.
..
.NET 中的结构和类有什么区别? 解决方案 在.NET中,有两类类型,引用类型和值类型.p> 结构是值类型,类是引用类型. 一般的区别是引用类型存在于堆上,而值类型存在于内联,也就是说,无论它是你定义的变量或字段. 包含值类型的变量包含整个值类型值.对于结构,这意味着变量包含整个结构及其所有字段. 一个包含引用类型的变量包含一个指针,或者一个引用到内存中实际值所在的其
..
关于已接受答案的快速说明:我不同意 Jeffrey 的回答,即由于 Delegate 必须是引用类型,因此所有委托都是引用类型.(多级继承链排除值类型是不正确的;例如,所有枚举类型都继承自 System.Enum,而后者又继承自 System.ValueType,它继承自 System.Object,all 引用类型.)但我认为,从根本上说,所有委托实际上不仅继承自 Delegate 但来自 Mu
..
在 C# 中是否有可能有一个带有类类型成员变量的结构?如果是这样,信息存储在何处,在堆栈、堆或两者中? 解决方案 是的,你可以.指向类成员变量的指针与结构体的其余值一起存储在栈上,而类实例的数据存储在堆上. 结构也可以包含类定义作为成员(内部类). 这里有一些非常无用的代码,至少可以编译并运行以表明这是可能的: 使用系统;命名空间 ConsoleApplication1{课程
..
定义具有引用类型成员的结构体(而不是将其定义为类)是否有意义?例如,定义这个结构: public struct SomeStruct{字符串名称;int32 位;} 我之所以这么问是因为我知道结构体是一种值类型,并且在其中定义某个引用类型没有任何意义. 我说得对吗?有人能解释一下吗? 解决方案 十有八九,您应该首先创建一个类而不是一个结构.例如,与您在 C++ 中可能发现的语义相
..
结构可以包含引用类型的字段吗?如果他们可以,这是一种不好的做法吗? 解决方案 是的,他们可以.这是个好主意吗?嗯,这取决于情况.就我个人而言,一开始我很少创建自己的结构......我会以一定程度的怀疑态度对待任何新的用户定义结构.我并不是说它总是是错误的选择,只是它需要比类更清晰的论据. 虽然结构体引用可变对象是个坏主意……否则你可以有两个看起来独立但不是独立的值: MyValue
..
我来自 C++ 背景,所以如果这是非 C# 的思维方式,我很抱歉,但我只需要知道.:) 在 C++ 中,如果我有两个指针,并且我想知道它们是否指向同一事物,我可以查看内存/观察窗口并查看它们的值 - 看看它们是否指向相同的内存空间. 在 C# 中,我一直没能找到类似的东西.具有完全相同值的一种引用类型实际上可能是完全相同的对象,也可能完全不同. 有没有办法让我在 C# 中看到这种
..
C# 不允许结构派生自类,但所有 ValueType 派生自 Object.这种区别在哪里? CLR 如何处理这个问题? 解决方案 C# 不允许从类派生结构体 您的陈述不正确,因此您感到困惑.C#确实允许从类派生结构.所有结构都派生自同一个类 System.ValueType,后者派生自 System.Object.并且所有枚举都源自 System.Enum. 更新:
..
.NET 中结构和类的区别是什么? 解决方案 在.NET中,有两类类型,引用类型和值类型.> 结构是值类型,类是引用类型. 一般区别在于引用类型存在于堆中,而值类型存在于内联中,也就是说,无论您定义了变量还是字段,都可以. 包含值类型的变量包含整个值类型值.对于结构体,这意味着变量包含整个结构体及其所有字段. 包含引用类型的变量包含一个指针,或引用到实际值所在的内存中的
..
String 是一种引用类型,尽管它具有值类型的大部分特征,例如不可变和 == 重载以比较文本而不是确保它们引用相同的对象. 那为什么字符串不只是一种值类型? 解决方案 字符串不是值类型,因为它们可能很大,并且需要存储在堆中.值类型(在迄今为止的所有 CLR 实现中)存储在堆栈中.堆栈分配字符串会破坏各种事情:堆栈只有 1MB 用于 32 位和 4MB 用于 64 位,您必须将每个字
..
几个月前有人问过我这个问题,我无法详细解释.C#中的引用类型和值类型有什么区别? 我知道值类型是 int、bool、float 等,引用类型是 delegate,interface 等等,或者这也是错的? 你能用专业的方式给我解释一下吗? 解决方案 你的例子有点奇怪,因为 int、bool 和 float> 是特定类型,接口和委托是类型的 kinds - 就像 struct 和
..
获取以下代码: 使用 System.Collections;使用 System.Collections.Generic;使用 UnityEngine;公开课 MyClass{public int myNumber;}公共类测试:MonoBehaviour{MyClass class1 = new MyClass();MyClass class2 = new MyClass();无效开始(){cl
..
如果我使用C#声明一个接口,有什么方法可以显式声明实现该接口的任何类型都是引用类型? 我要这样做的原因是,无论我在哪里使用接口作为类型参数,都不必指定实现类型也必须是引用类型. 我要完成的示例: 公共接口IInterface{无效的A();int B {}}公共类UsingType其中T:IInterface{公共无效DoSomething(T输入){SomeClass.
..
我具有以下规格: 通用Value_Type类型是私有的;软件包Containers.Arrays为类型Static_Array是Value_Type的数组(正范围);类型Static_Array_Access是访问所有Static_Array;类型Dynamic_Array被标记为私有;函数Length(Self:Dynamic_Array)返回带有内联的Natural;函数“&"(左:Dy
..
科特林有原始类型吗?当我声明变量:val myAge: Int = 18时,myAge变量将实际值存储为18还是将对象的地址存储在内存中?如果Int是原始类型,那么为什么我们可以使用myAge.minus(10)这样的方法呢? 解决方案 否...是. Kotlin没有原始类型(我的意思是您不能直接声明原始).它使用Int,Float之类的类作为基元的对象包装. 当将kotlin
..
我是Java的新手. 我从我的BFS代码中提供了简短的代码段. public int bfs(Person p, Person q) { private HashMap marked; private int count; marked = new marked(); count =
..
我正在尝试了解以下问题.我想知道为什么在下面的程序中B == A和C == B是错误的. using System; namespace Mk { public class Class1 { public int i = 10; } class Program { static void Main(string[] a
..
我知道在扩展转换中,目标数据类型可以保存源数据类型提供的任何值.转换值类型时,我可以理解这一点, 但不能在引用类型之间.我的问题来自以下场景: public class Person { public string Name { get; set; } } public class Employee : Person { public string SurName { ge
..
当我尝试在Swift 4中使用Codable升级和减少代码时,我一直在努力理解类/引用类型的行为及其与更改的关系. 我有两个类-一个具有所有持久数据并将其保存到UserDefaults(带有坐标的地名和字符串)的超类,以及一个子类,其中包含我没有的其他临时信息需要(SuperClass坐标的天气数据). 在Swift 3中,我曾经这样保存数据: func saveUserDefa
..
我在每个网站上都涉及此主题,并且通过Jon Skeets关于参考和值和参数传递.我了解了这两种类型的概念,它们代表什么,以及与Value和Reference参数的区别是另一个规范. 我了解这是如何工作的以及如何使用它,但是我不明白有人对这个话题说过什么.大家都说,例如int是值类型,而string是引用类型.但是根据我的理解,类型基本上只取决于声明它们的类的类型. 看看此代码片段以了解
..