首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C#中,我可以使用反射来确定枚举类型是int,byte,short等吗?

在C#中,您可以使用反射来确定枚举类型的基础类型。以下是一个示例代码,演示如何使用反射来获取枚举类型的基础类型:

代码语言:csharp
复制
using System;

public enum MyEnum : short
{
    Value1,
    Value2,
    Value3
}

public class Program
{
    public static void Main()
    {
        Type type = typeof(MyEnum);
        Type underlyingType = Enum.GetUnderlyingType(type);
        Console.WriteLine("基础类型:" + underlyingType.Name);
    }
}

输出结果:

代码语言:txt
复制
基础类型:Int16

在这个示例中,我们定义了一个名为MyEnum的枚举类型,并将其基础类型设置为short。然后,我们使用typeof关键字获取该类型的Type对象,并使用Enum.GetUnderlyingType方法获取其基础类型。最后,我们将基础类型的名称输出到控制台。

您可以使用类似的方法来确定其他枚举类型的基础类型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【黄啊码】关于C#的数据类型,初入门的开发者必须学会

C#的数据类型可以分为3类:数值类型,引用类型,指针类型。 指针类型仅在不安全代码中使用。 值类型包括简单类型(如字符型,浮点型和整数型),集合类型和结构型。...对于sbyte,byteshort,ushort,int,uint,long,ulong,默认值为0。 对于char,默认值'\x0000' 对于float,默认值0。...简单类型用保留字定义,这些保留字仅仅是System名字空间里预定义的结构类型的化名。比如int保留字,System。Int32System名字空间中预定义类型。...简单类型主要有整型,浮点类型,小数类型,布尔类型,字符型 **1.1.1 整型 **C#中支持9种整型:sbyte,byteshort,ushort,int,uint,long,ulong和char。...因此,两种类型不存在隐式或显式转换。布尔型:值为true或false。没有标准能实现布尔类型和其他类型的转换。 1.2 枚举类型 枚举类型的元素使用类型只能long,intshortbyte

56510

【深入浅出C#】章节 2:数据类型和变量:类型转换和类型推断

以下一些常见的基本类型转换: 整数类型转换:可以将一个整数类型转换为另一个整数类型,如将int类型转换为shortbyte、long。...枚举类型转换:可以将一个枚举类型转换为其底层的整数类型,如将枚举类型转换为int。这样可以需要使用整数类型的场景中进行操作。...下面隐式类型转换的一些常见规则: 整数类型之间的隐式转换: 从较小的整数类型(如byteshortint)向较大的整数类型(如int、long)进行转换隐式的。...例如,byte可以隐式转换为shortint、long。 浮点数类型之间的隐式转换: 从较小的浮点数类型(如float)向较大的浮点数类型(如double)进行转换隐式的。...此外,匿名类型的属性名称和类型在编译时确定的,因此无法在运行时通过反射来获取属性信息。

26810

c#知识点1.0数据类型

以前就说,要开始写c#的博客,最近把linux大约写完了,现在开始c#了,java的博客简书一大堆,就避免撞车吧,其实菜鸟(嘻嘻,写不出更好的了) 数据类型 c#数据类型主要分为二大类:值类型和引用数据类型...值类型: 整数类型 sbyte 带符号的8位整数 short 带符号的16位整数 int 带符号的32位整数 long带符号的64位整数 byte无符号的8位整数...1.0 可以使用object引用绑定任何子类型的对象。...ToString().用户定义的类需要重写 字符串类型 c字符串一个字符数组,c++字符串一个对象,c#提供了自己的数据类型,字符串保存在堆,因此把字符串复制给另一个字符串,会得到对内存同一个字符串二次引用...参考文章: c#的数据类型简介 二维数组打印

1.1K70

C# 7.3新特性一览

泛型约束:枚举、委托和非托管 自C# 2.0引入泛型以来,开发人员就一直抱怨,无法把一个泛型类型指定为枚举。这个问题终于解决了,你现在可以使用enum关键字作为泛型约束了。...非托管类型包括: 基元类型sbyte、byteshort、ushort、int、uint、long、ulong、char、float、double、decimal、bool、IntPtr或UIntPtr...初始化器的表达式变量 某种程度上,这看上去像个特性。微软不仅没有增加功能,而是去掉了表达式变量的使用场景限制。...泛型约束:枚举、委托和非托管 自C# 2.0引入泛型以来,开发人员就一直抱怨,无法把一个泛型类型指定为枚举。这个问题终于解决了,你现在可以使用enum关键字作为泛型约束了。...非托管类型包括: 基元类型sbyte、byteshort、ushort、int、uint、long、ulong、char、float、double、decimal、bool、IntPtr或UIntPtr

1.1K30

】 先来看一下Java和C#的数据类型区别。

C# Java 布尔型 bool boolean 字符型 char char 整形 byte byte sbyte int int uint nuint long long unlong...3.枚举类型 二者都有枚举类型enum。 C#枚举类型时值类型,默认情况下,枚举成员的关联常数值为类型 int;它们从零开始,并按定义文本顺序递增 1。...可以显式指定任何其他整数数值类型作为枚举类型的基础类型。...enum HttpCode : ushort { OK = 0, BadRequest= 400 } Java的枚举类型通过类实现的,所以可以为其添加属性和方法。...JavaJDK原生不支持元组,但有框架javatuples支持元祖。 5.可空值类型与包装类型 C#为值类型提供了对应的可空值类型,例如int->int?,本质通过结构体实现的。

46440

如何计算一个实例占用多少内存?

public static unsafe int SizeOf() where T : unmanaged => sizeof(T); 只有原生类型枚举类型可以直接使用sizeof操作符,如果将它应用在其他类型...既然字节长度由类型来决定,如果我们能够确定每个字段成员的类型,那么我们不就能够将该类型对应的字节数计算出来?实际上不行的。...2,但是对于一个针对类型组合分别为byte + shortbyte + intbyte + long的二元组来说,对应的字节并不是3、5和9,而是3、8和16。...就目前的了解,这个问题在单纯的C#领域都无法解决,但IL层面提供的Ldflda指令可以帮助我们解决这个问题。...由于这个IL指令C#没有对应的API,所以我们只有采用如下的形式采用IL Emit的来使用它。

28630

C# 如何计算一个实例占用多少内存?

其实C#提供了一些用于计算大小的操作符和API,但是它们都不能完全解决刚才提出的问题。本文提供了一种计算值类型和引用类型实例所占内存字节数量的方法。...public static unsafe int SizeOf() where T : unmanaged => sizeof(T); 只有原生类型枚举类型可以直接使用sizeof操作符,如果将它应用在其他类型...既然字节长度由类型来决定,如果我们能够确定每个字段成员的类型,那么我们不就能够将该类型对应的字节数计算出来?实际上不行的。...就目前的了解,这个问题在单纯的C#领域都无法解决,但IL层面提供的Ldflda指令可以帮助我们解决这个问题。...由于这个IL指令C#没有对应的API,所以我们只有采用如下的形式采用IL Emit的来使用它。

37960

深入浅出OOP(六): 理解C#的Enums

若要定义这些值,可以使用枚举类型枚举类型使用 enum 关键字声明的。 ? 从OOP上来说,枚举的角色和和class一样,它创建了一种新的数据类型。...枚举可继承自数值型类型,如long, ulong, short, ushort, int, uint, byte 何sbyte。但是无法继承自char类型枚举可被枚举继承?...format需要传入3个参数,第一个枚举类型, 第二个参数枚举值,第三个格式化标示---二进制、十进制。 C....枚举类型检测非常好,项目使用很实用的功能。...枚举小结: enum表达了恒定的数值,枚举类型可以用字符串标示 无法声明char基础类型枚举 enum仅仅能继承自byte, sbyte, short, ushort, int, uint, long

68880

【深入浅出C#】章节 2:数据类型和变量:基本数据类型和引用类型

C#,基本数据类型和引用类型两种不同的数据类型,它们作用和使用上有一些明显的区别。基本数据类型直接存储数据值的简单类型。...转义字符: 字符中使用斜杠(\)可以表示一些特殊字符,如换行符(\n)、制表符(\t)。...1.5 枚举类型 C#枚举类型(enum)用于定义一组具名的常量值,它允许我们为这些值分配一个名称,以便于理解和使用。...以下一些指导原则: 数据的范围和大小: 如果数据整数类型,并且范围较小,可以选择使用byteshortint整数类型。 如果范围更大,可以选择long类型。...以下一些常见数据类型对性能和内存的影响以及优化的注意事项: 整数类型: 较小的整数类型(如byteshortint)通常占用较少的内存,并且计算性能较高。

41310

C#:终于有人把 ValueTask、IValueTaskSource、ManualResetValueTaskSourceCore 说清楚了!

token); 如果通过 Task 创建任务,可以使用 new Task() 、Task.Run() 方式创建一个任务,然后就可以使用 async/await 关键字 定义异步方法,开启异步任务。...深入其原理之前,笔者从其它博客、文档等地方查阅到,为了降低 Task(C#5.0引入) 的性能开销,C# 7.0 出现了 ValueTask。...根据官方的文档,发现了 ManualResetValueTaskSourceCore,这个类型实现了 IValueTaskSource 接口,并且进行了封装,因此我们可以使用 ManualResetValueTaskSourceCore...C# 的 Socket 也没有直接的异步接口。 所以这里我们要实现一个异步的 Redis 客户端。...8,使用 ManualResetValueTaskSourceCore 接下来,我们通过 ManualResetValueTaskSourceCore 改造以往的代码,这样我们可以直观的感受到这个类型用来干嘛的

86630

语法糖--JAVA成长之路

开始coding之前先科普下,Java的swith自身原本就支持基本类型。比如int、char。 对于int类型,直接进行数值的比较。对于char类型则是比较其ascii码。...所以,对于编译器来说,switch其实只能使用整型,任何类型的比较都要转换成整型。比如byteshort,char(ackii码整型)以及int。...原始类型byte, short, char, int, long, float, double 和 boolean 对应的封装类为Byte, Short, Character, Integer, Long...-Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能。...要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?enum

63520

C# 学习笔记(2)—— 语言基础

可以看出,标识符就是我们命名用的字符串,当然这个字符串不能随心所欲的命名,必须遵守语言的规则。我们平时开发也很少会起一些奇奇怪怪的名字,这里也不去多介绍规则了。...引用类型包含:数组、类、接口、委托、object 数值类型 数值类型分为:整型、浮点型、十进制型 3 种 int、long、char、byteshort 等等这些都是整形 float、double...true 和 false 字符串类型 string(字符串)类型 System.String 的别名,表示由零个或多个字符组成的不可变序列,可使用 [] 运算符来访问 string 的每个字符 string...Male } 很少有人知道我们还可以枚举添加继承 enum Gender : byte { Female, Male, } 结构体 C# 的结构体一种值类型,通常适用于表示诸如 Point...与变量不同,常量不能在赋值之后发生变化,而其对应内存的值不能被改变 变量的使用 语法很简单:数据类型 变量名 如果要同时声明多个同类型变量,可以用这种语法: int a, b, c; 如果在声明之后,

15910

走进 JDK 之 Byte

其实不光是 Byte,Java 的所以基本整数类型都是这样(当然不包括 char) : 基本类型 最大值 最小值 byte 127 -128 short 215-1 - 215 int 231-1 231...下面看第二个问题: 作为方法内部局部变量的 byte 在内存占几个字节 ? 乍看之下问一个废话,byte 那不肯定是 1 个字节 !...同理,int 就是四个字节。那么,方法内的局部变量 存储堆上的?显然不是的,它是存储的。如果不理解的话,我们先来回顾一下 Java 的运行时数据区域。...除了 long 和 double 占用两个 Slot 以外,其他基本类型 boolean、byte、char、shortint、float 都占用一个 Slot。...所以,局部变量表byteint 占用的内存一样的。 总结 Byte 源码没有说的很多,很多方法都是直接调用 Integer 类的方法。

39810

C#核心概念--装箱和拆箱(什么装箱和拆箱)

,通过装箱和拆箱操作,能够类型和引用类型架起一做桥梁.换言之,可以轻松的实现值类型与引用类型的互相转换,装箱和拆箱能够统一考察系统,任何类型的值最终都可以按照对象进行处理....C#语言中的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型int, byte, short,bool等等,就是说所有的事物都是对象。...正是通过将类型分成值型(value)和引用型(regerencetype),C#定义的值类型包括原类型(Sbyte、ByteShort、Ushort、Int、Uint、Long、Ulong、Char...、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct),引用类型包括:类、数组、接口、委托、字符串。...拆箱就是(int)obj,将obj拆箱!! C#,将类和数组都归为了引用型的,那么值类型和引用型有什么区别呢?

3.7K21

C# 基础知识系列-13 常见类库(三)

依次指定各个位置的值: public Guid (int a, short b, short c, byte d, byte e, byte f, byte g, byte h, byte i, byte...基础类型的可空化 我们常用的基本数据类型,包括这两篇介绍的类型除了string类,其他都是struct类型C#struct无法置为NULL,一般情况下并不影响程序的运行。...如果有同学因为生病了缺考了,我们直接给他试卷上标记零分显然不可取的,所以需要标记为NULL,意思缺考。这时候如果在系统简单的使用 int或者double存成绩就会出现NULL无法存入系统。...我们看下如何声明一个可空的int类型: Nullable score; C# 除了以上的声明方式,还提供了一种特殊的语法,使用?: int? score; 也就是类型?...表示 的可空类型。 2.1 可空类型使用 可空类型可以跟其原类型一样正常使用,包括原类型支持的算术运算

1.5K40

「高并发通信框架Netty4 源码解读(四)」NIO缓冲区之字节缓冲区ByteBuffer详解

这些数据类型及其大小总结在下表 数据类型 大小(以字节表示) Byte 1 Char 2 Short 2 Int 4 Long 8 Float 4 Double 8 每个基本数据类型都是以连续字节序列的形式存储在内存...这个类的作用就像一个类型安全的枚举。它定义了以其本身实例预初始化的两个 public区域。只有这两个 ByteOrder 实例总是存在于 JVM ,因此它们可以通过使用--操作符进行比较。...Java 的默认字节顺序大端字节顺序,这允许类文件以及串行化的对象可以在任何 JVM 工作。如果固有硬件字节顺序小端,这会有性能隐患。...新的缓冲区的容量字节缓冲区存在的元素数量除以视图类型组成一个数据类型的字节数(参见上面的表格)。切分任一个超过上界的元素对于这个视图缓冲区都是不可见的。...& 0xffffffffL)); } } 内存映射缓冲区 映射缓冲区带有存储文件,通过内存映射来存取数据元素的字节缓冲区。

62910

java 注解简述

、Annotation类型类型成员(方法、构造方法、成员变量、枚举值) 方法参数和本地变量(如循环变量、catch参数) Annotation类型的声明中使用了target可更加明晰其修饰的目标。...与class使用被分离的)。...定义注解格式: public @interface 注解名 {定义体} 注解参数的可支持数据类型: 1.所有基本数据类型int,float,boolean,byte,double,char,long,...(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型;    第二,参数成员只能用基本类型byte,short,char,int,long,float..."; int id(); //default 可以不写修饰符 } 解释: ElemengType.TYPE 元素类型,其实就是成员变量,JDK 的API也称做元素注意

13410
领券