C# 有没有一个词包含了“的意思?”;“类”;及;结构;?
C#中的类和结构具有以下几个特点:C# 有没有一个词包含了“的意思?”;“类”;及;结构;?,c#,terminology,C#,Terminology,C#中的类和结构具有以下几个特点: 它们可以实例化(没有相反的限制,比如抽象类和静态类) 它们可以包含方法和属性实现 类型的作者定义类型的实例字段 我们经常使用“类”和“结构”来区分“引用类型”和“值类型”,但有时考虑这两种类型是有用的。此外,“引用类型”还包括接口和委托,它们不是类。因此,“类”并不意味着任何引用类型,它意味着“一个引用(填空)” 例如,如果引用和值类型声明如下: public sealed class ref String { } public class val Int
- 它们可以实例化(没有相反的限制,比如抽象类和静态类)
- 它们可以包含方法和属性实现
- 类型的作者定义类型的实例字段
我们经常使用“类”和“结构”来区分“引用类型”和“值类型”,但有时考虑这两种类型是有用的。此外,“引用类型”还包括接口和委托,它们不是类。因此,“类”并不意味着任何引用类型,它意味着“一个引用(填空)”
例如,如果引用和值类型声明如下:public sealed class ref String { }
public class val Int32 { }
public sealed class String { }
public struct Int32 { }
而不是像这样:
public sealed class ref String { }
public class val Int32 { }
public sealed class String { }
public struct Int32 { }
然后可以用“类”这个词来表示这个概念
我在这里给出的最佳答案是“具体类型”,但这会让人困惑,因为它也可能引用抽象类的非抽象子类
有什么建议吗
编辑
为了澄清这一点,我并不是在寻找一个词来共同描述类和结构的实例。我试图描述类类型和结构类型
换句话说,如果“class”表示包含System.String
、System.FileInfo
等的集合,“struct”表示包含System.Int32
、System.Collections.Generic.List.Enumerator
等的集合,那么我正在寻找表示这些集合的并集的单词
编辑2
(回应Jordão的回答)回答这个问题的另一种方法是完成以下句子:“所有C#方法实现都必须声明为(填空)”类和结构都是定义对象的类型。它们是面向对象编程语言中的构建块。您可以使用UML或其他高级面向对象建模语言对它们进行建模。两者之间的选择是实现细节。我通常使用术语“类型”来指代这些元素中的任何一个:类、结构,甚至接口和枚举
我从未真正觉得有必要专门讨论类和结构,我可能只会说“类”,然后根据需要区分它们。我发现这是一个伪讨论。第#3点也可以说是关于枚举和接口的,关于抽象类的子类不适合混合的问题,我根本不明白。我认为你自己关于“具体类型”的建议是可以的,但也许你只是想把它们作为类和结构来讨论,等等,但抽象类的子类和实现接口的类除外。你所寻找的东西没有术语的原因可能是它本身不是一个非常有用的概念 编辑:
所有C#方法实现都必须声明为类或结构的成员,它应该是Microsoft术语。这些概念的起源是C++,其中结构只是所有成员都是公共的类。因此,微软在这里做了一些新的判断,混合了C、C++和java的一些。所以他们也应该发明一个术语 Microsoft将它们全部表示为“类型”,可以是“值”、“引用”和“指针”: 但是这些概念并不仅仅收集结构和类
所以,如果我们发明了一些自定义术语,我们可以从Pascal语言中取一个,例如,“记录”。或者可以从这里创造一些其他术语:C#中的术语
type
,可以指以下任何一种:
- 参考类型
,对象
和动态
字符串
- 类类型
- 接口类型
- 委托类型
- 构造类/接口/委托类型(例如
)列表
- 数组类型
- 值类型
- 结构类型
- 枚举类型
- 简单类型(整数类型、浮点类型、
和decimal
)bool
- 可空类型
- 指针类型
类型声明
(或:用户可定义类型
)
根据您的观点,您也可以考虑类型参数和<代码> Value<代码>类型。
然而,对于“类或结构”并没有任何特殊的术语。用C#规范的语言,人们会说: 所有C#方法实现必须声明为类
或结构
声明的成员
我知道这个问题有一个选定的答案,但我相信我可以提供一个新的见解,这仍然是有益的: 我想你要找的词可能是Model。这个术语在CS中被用来指几个不同的东西,但维基百科的文章描述了我的意图 在此上下文中,模型是用某种元语言对系统的描述。一个系统可以用它的三个部分来充分表达:结构;行为;以及互联性。.NET类和.NET结构都与此定义兼容。接口没有定义,因为行为没有定义。您只能指示方法调用和成员声明的结构以及操作的类型约定(互连)。枚举可能与此定义兼容,也可能与此定义不兼容,但最常用的是不兼容,因为它们通常不表示行为。例外情况是枚举,对于这些枚举,按位操作足以表示有意义的集合操作。在这个前提下,我认为将枚举与类和结构一起分类是公平的。