reference-type相关内容

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

C# 不允许结构派生自类,但所有 ValueTypes 都派生自 Object.这种区别在哪里? CLR 如何处理这个问题? 解决方案 C# 不允许结构派生自类 您的陈述不正确,因此您感到困惑.C# 确实 允许结构派生自类.所有结构都派生自同一个类 System.ValueType,后者派生自 System.Object.并且所有枚举都派生自 System.Enum. ..
发布时间:2022-01-31 16:22:01 C#/.NET

.NET 中的结构和类有什么区别?

.NET 中的结构和类有什么区别? 解决方案 在.NET中,有两类类型,引用类型和值类型.p> 结构是值类型,类是引用类型. 一般的区别是引用类型存在于堆上,而值类型存在于内联,也就是说,无论它是你定义的变量或字段. 包含值类型的变量包含整个值类型值.对于结构,这意味着变量包含整个结构及其所有字段. 一个包含引用类型的变量包含一个指针,或者一个引用到内存中实际值所在的其 ..
发布时间:2022-01-31 15:37:41 C#/.NET

为什么委托是引用类型?

关于已接受答案的快速说明:我不同意 Jeffrey 的回答,即由于 Delegate 必须是引用类型,因此所有委托都是引用类型.(多级继承链排除值类型是不正确的;例如,所有枚举类型都继承自 System.Enum,而后者又继承自 System.ValueType,它继承自 System.Object,all 引用类型.)但我认为,从根本上说,所有委托实际上不仅继承自 Delegate 但来自 Mu ..
发布时间:2022-01-18 12:06:04 C#/.NET

你能在结构中有一个类吗?

在 C# 中是否有可能有一个带有类类型成员变量的结构?如果是这样,信息存储在何处,在堆栈、堆或两者中? 解决方案 是的,你可以.指向类成员变量的指针与结构体的其余值一起存储在栈上,而类实例的数据存储在堆上. 结构也可以包含类定义作为成员(内部类). 这里有一些非常无用的代码,至少可以编译并运行以表明这是可能的: 使用系统;命名空间 ConsoleApplication1{课程 ..
发布时间:2021-12-23 17:30:58 C#/.NET

用引用类型成员定义结构体有意义吗?

定义具有引用类型成员的结构体(而不是将其定义为类)是否有意义?例如,定义这个结构: public struct SomeStruct{字符串名称;int32 位;} 我之所以这么问是因为我知道结构体是一种值类型,并且在其中定义某个引用类型没有任何意义. 我说得对吗?有人能解释一下吗? 解决方案 十有八九,您应该首先创建一个类而不是一个结构.例如,与您在 C++ 中可能发现的语义相 ..
发布时间:2021-12-23 17:07:07 C#/.NET

结构体可以包含引用类型的字段吗

结构可以包含引用类型的字段吗?如果他们可以,这是一种不好的做法吗? 解决方案 是的,他们可以.这是个好主意吗?嗯,这取决于情况.就我个人而言,一开始我很少创建自己的结构......我会以一定程度的怀疑态度对待任何新的用户定义结构.我并不是说它总是是错误的选择,只是它需要比类更清晰的论据. 虽然结构体引用可变对象是个坏主意……否则你可以有两个看起来独立但不是独立的值: MyValue ..
发布时间:2021-12-23 16:59:29 C#/.NET

在调试器中唯一标识引用类型

我来自 C++ 背景,所以如果这是非 C# 的思维方式,我很抱歉,但我只需要知道.:) 在 C++ 中,如果我有两个指针,并且我想知道它们是否指向同一事物,我可以查看内存/观察窗口并查看它们的值 - 看看它们是否指向相同的内存空间. 在 C# 中,我一直没能找到类似的东西.具有完全相同值的一种引用类型实际上可能是完全相同的对象,也可能完全不同. 有没有办法让我在 C# 中看到这种 ..
发布时间:2021-12-14 08:38:40 C#/.NET

ValueTypes 如何从 Object (ReferenceType) 派生并仍然是 ValueTypes?

C# 不允许结构派生自类,但所有 ValueType 派生自 Object.这种区别在哪里? CLR 如何处理这个问题? 解决方案 C# 不允许从类派生结构体 您的陈述不正确,因此您感到困惑.C#确实允许从类派生结构.所有结构都派生自同一个类 System.ValueType,后者派生自 System.Object.并且所有枚举都源自 System.Enum. 更新: ..
发布时间:2021-12-02 13:57:04 C#/.NET

.NET 中的 struct 和 class 有什么区别?

.NET 中结构和类的区别是什么? 解决方案 在.NET中,有两类类型,引用类型和值类型.> 结构是值类型,类是引用类型. 一般区别在于引用类型存在于堆中,而值类型存在于内联中,也就是说,无论您定义了变量还是字段,都可以. 包含值类型的变量包含整个值类型值.对于结构体,这意味着变量包含整个结构体及其所有字段. 包含引用类型的变量包含一个指针,或引用到实际值所在的内存中的 ..
发布时间:2021-12-02 13:18:43 C#/.NET

在 C# 中,为什么 String 是一种行为类似于值类型的引用类型?

String 是一种引用类型,尽管它具有值类型的大部分特征,例如不可变和 == 重载以比较文本而不是确保它们引用相同的对象. 那为什么字符串不只是一种值类型? 解决方案 字符串不是值类型,因为它们可能很大,并且需要存储在堆中.值类型(在迄今为止的所有 CLR 实现中)存储在堆栈中.堆栈分配字符串会破坏各种事情:堆栈只有 1MB 用于 32 位和 4MB 用于 64 位,您必须将每个字 ..
发布时间:2021-12-01 09:28:05 C#/.NET

c#中的引用类型和值类型有什么区别?

几个月前有人问过我这个问题,我无法详细解释.C#中的引用类型和值类型有什么区别? 我知道值类型是 int、bool、float 等,引用类型是 delegate,interface 等等,或者这也是错的? 你能用专业的方式给我解释一下吗? 解决方案 你的例子有点奇怪,因为 int、bool 和 float> 是特定类型,接口和委托是类型的 kinds - 就像 struct 和 ..
发布时间:2021-12-01 09:01:24 C#/.NET

指定接口只能由引用类型C#实现

如果我使用C#声​​明一个接口,有什么方法可以显式声明实现该接口的任何类型都是引用类型? 我要这样做的原因是,无论我在哪里使用接口作为类型参数,都不必指定实现类型也必须是引用类型. 我要完成的示例: 公共接口IInterface{无效的A();int B {}}公共类UsingType其中T:IInterface{公共无效DoSomething(T输入){SomeClass. ..
发布时间:2021-05-10 18:51:36 C#/.NET

Kotlin是否具有原始类型?

科特林有原始类型吗?当我声明变量:val myAge: Int = 18时,myAge变量将实际值存储为18还是将对象的地址存储在内存中?如果Int是原始类型,那么为什么我们可以使用myAge.minus(10)这样的方法呢? 解决方案 否...是. Kotlin没有原始类型(我的意思是您不能直接声明原始).它使用Int,Float之类的类作为基元的对象包装. 当将kotlin ..
发布时间:2021-02-15 19:25:30 其他开发

C#中的引用类型比较

我正在尝试了解以下问题.我想知道为什么在下面的程序中B == A和C == B是错误的. using System; namespace Mk { public class Class1 { public int i = 10; } class Program { static void Main(string[] a ..
发布时间:2020-07-05 20:23:30 C#/.NET

扩大参考类型之间的转换

我知道在扩展转换中,目标数据类型可以保存源数据类型提供的任何值.转换值类型时,我可以理解这一点, 但不能在引用类型之间.我的问题来自以下场景: public class Person { public string Name { get; set; } } public class Employee : Person { public string SurName { ge ..
发布时间:2020-07-05 20:23:26 C#/.NET

参考类型/子类,以及对Swift 4 Codable&编码器/解码器

当我尝试在Swift 4中使用Codable升级和减少代码时,我一直在努力理解类/引用类型的行为及其与更改的关系. 我有两个类-一个具有所有持久数据并将其保存到UserDefaults(带有坐标的地名和字符串)的超类,以及一个子类,其中包含我没有的其他临时信息需要(SuperClass坐标的天气数据). 在Swift 3中,我曾经这样保存数据: func saveUserDefa ..
发布时间:2020-07-05 20:23:23 移动开发

值和引用类型的混淆

我在每个网站上都涉及此主题,并且通过Jon Skeets关于参考和值和参数传递.我了解了这两种类型的概念,它们代表什么,以及与Value和Reference参数的区别是另一个规范. 我了解这是如何工作的以及如何使用它,但是我不明白有人对这个话题说过什么.大家都说,例如int是值类型,而string是引用类型.但是根据我的理解,类型基本上只取决于声明它们的类的类型. 看看此代码片段以了解 ..
发布时间:2020-07-05 20:22:13 C#/.NET