Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# int(Int32)被认为是.NET中的对象还是原语(不是int?)?_C#_.net_Int_Primitive_Value Type - Fatal编程技术网

C# int(Int32)被认为是.NET中的对象还是原语(不是int?)?

C# int(Int32)被认为是.NET中的对象还是原语(不是int?)?,c#,.net,int,primitive,value-type,C#,.net,Int,Primitive,Value Type,int(也称为Int32)是对象还是.NET中的原语(我不是问关于int?) 我在保存的单词int上点击F12,得到: public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int> { ... } public struct Int32:IComparable、IFormattable、IConvertible、IComparable、I

int(也称为
Int32
)是对象还是.NET中的原语(我不是问关于
int?

我在保存的单词
int
上点击F12,得到:

public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>

{ ... }
public struct Int32:IComparable、IFormattable、IConvertible、IComparable、IEquatable
{ ... }
它不是从对象继承的,这是否意味着
int
是一个原语

C#中的所有内容都继承自
对象
,包括
int

发件人:

Int32是表示有符号整数的不可变值类型

引用和值类型都是从最终基派生的 类对象

有15种内置类型,其中2种为类(对象和字符串),其余为基本类型:

bool - System.Boolean
byte - System.Byte
sbyte - System.SByte
char - System.Char
decimal - System.Decimal
double - System.Double
float - System.Single
int - System.Int32
uint - System.UInt32
long - System.Int64
ulong - System.UInt64
object - System.Object
short - System.Int16
ushort - System.UInt16
string - System.String

查看C#参考源或此处:

基本类型是通过关键字识别的类型,因此yesint是基本类型

基元类型还允许您将其用作文本

但是,关键字标识的基础类型是System.Int32,它不是基元类型。
这是一种值类型,不是引用类型(或对象)。

Int32
是一种结构,类似于类型(编译时),而不是对象(运行时)。所以您不能说“
Int32
是一个对象”,但可以说“
Int32
继承自对象”

结构是对象,ValueType派生自对象

int
Int32
以及同义词,其中
Int32
更适合于读者关心位长度的操作(位篡改操作、溢出情况等)

MSDN-基本类型通过关键字标识,关键字是系统命名空间中预定义类型的别名。基元类型与其别名类型完全无法区分:写入保留字int与写入System.Int32完全相同。 因为基元类型别名为常规类型,所以每个基元类型都有成员。例如,Integer在System.Int32中声明了成员。可以将文字视为其相应类型的实例。”

因此,基本上intInt32是同义词;您可能倾向于在只需要“整数”的地方使用int,在使用Int32时,会显式显示大小,以便未来的维护人员知道在适当的情况下放大int是安全的,但应小心以相同的方式使用INGInt32变量。使用这两种变量生成的代码将是相同的,但区别仅在于代码的可读性,或者如果您想将其称为代码表示的话

您可以阅读应用.NET Framework编程-作者Jeffrey Richter是使用完整类型名称的一个很好的例子。以下是我记得的主要内容:


类型名称在.NET语言之间可以变化。例如,在C语言中,长映射到Stimult.It64,而C++中有托管扩展,长映射到It32。因为在使用.NET时语言可以混合和匹配,所以可以肯定的是,不管读者首选语言,使用显式类名总是更清楚。t、

int
不是从
object
继承的。将
int
值赋给
object
变量称为装箱。@YacoubMassad:Well,表示“所有类、结构、枚举和委托”“从
系统对象继承。这是一个结构。自己得出结论。@YacoubMassad它确实继承自
对象
-否则它将如何覆盖
Equals
GetHashCode
等?装箱与表示相关,而不是继承。
(1是对象)
返回true。所以我想你们是对的。好吧,试过这个就足够了:
intxx=1;如果(xx是对象){Console.Write(“yeap”);}
它是一个结构,不允许指定基类型。
System.ValueType
的基本类型由
struct
关键字隐含。在其他语言(如Java)中,对象和原语之间有区别,但在.NET中,类型系统是统一的。所有非指针、非接口类型都继承自
System.Object
。您的意思是Int32是“由编程语言作为基本构建块提供的数据类型”吗?想知道为什么它没有显示Int32继承对象,因为它确实发现这个定义有问题,因为它缺少术语“基元类型”的范围。什么的原始类型?NET框架?那么,这个定义就不可能是正确的,因为不同的.NET语言可以有不同的关键字集。语言?然后我想知道这是否是被问到的问题。您引用的“基元类型”的定义是针对VB.NET的。这些类型内置在C#中,而C#不一定与整个.NET中的内置类型相同。另外,请注意,链接页面中提到了“简单类型”,这是一种C#类型,可能与“基本类型”相同,也可能不同。为整个.NET Framework提供了一个稍微不同的类型列表,这些类型被视为基本类型。C#中没有基本类型,您可以在任何
int
literal上调用
GetType
,并且
GetType
System.Object中声明。请尝试以下代码:
int xx=1;如果(XX是对象){控制台。写(“YAAP”);}你应该考虑在C语言和java中如何实现原语之间的区别。Java假装是完全客观的语言,并且有类型
Integer
Double
,因此派生自基本对象类型。但是,这些是引用类型,与原语
int
double不同<