C#中byte和Byte数据类型的区别

197

我注意到在C#中有两种类型,分别是byteByte。它们都声称是struct System.Byte类型,表示一个8位无符号整数。

这两者之间有何不同(如果有的话),为什么要使用其中的一种而不是另一种?

8个回答

168

byte关键字是System.Byte数据类型的别名。

它们代表相同的数据类型,因此生成的代码相同。只有在使用上存在一些区别:

  • 即使未包含System命名空间,您也可以使用byte。要使用Byte,必须在页面顶部具有using System;或指定完整的命名空间System.Byte

  • 在某些情况下,C#仅允许您使用关键字而不是框架类型,例如:

.

enum Fruits : byte // this works
{
  Apple, Orange
}

enum Fruits : Byte // this doesn't work
{
  Apple, Orange
}

如需详细了解其他别名,请参阅链接


1
@RadhaManohar byte[] / Byte[]。两个名称指的是同一件事情。即使MSDN文档也在它们之间切换;请查看Encoding.GetBytes MSDN(在本评论撰写时,方法签名中返回类型为byte[],而文档中返回类型为Byte[])。 - Christopher Berman

26

byteSystem.Byte 在 C# 中是完全相同的。 byte 只是语法糖,并且受 StyleCop 推荐(用于风格指南)。


8
没有区别。 byte 是 System.Byte 的别名,就像 int 是 System.Int32 的别名,long 是 System.Int64 的别名,string 是 System.String 的别名,等等。

6

C#中有许多.NET类型的别名。例如,byteByte 的别名,stringString 的别名,intInt32 的别名。也就是说,byteByte 实际上是同一种类型。


6

这里的小写字母 nothing 是一个关键字,它是 Byte 类型的别名。

这只是纯粹的语法糖。


4

它们通常是相同的。


1

byte 是 C# 中的一种内置数据类型。
System.Byte 是代表一个 byte 的结构体,并提供额外的方法,如 ParseTryParse

byteSystem.Byte 结构体的别名。不同的 .NET 语言根据特定语言的语义具有不同的别名,但它们都映射到 .NET 框架中的特定类型。


0

还有,在使用反射时,

Type t=Type.GetType("System.Byte"); //works

Type t=Type.GetType("System.byte"); //doesn't work, I can see no way to use"byte" directly here without converting it to "Byte"

4
没有“将其转换为字节”的概念。 byteSystem.Byte是完全相同的,没有任何区别。这与Java不同,因为它们实际上是离散的类。 - Kirk Woll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接