C#中对枚举值进行显式转换是否有性能开销?

比如以下代码会进行装箱/拆箱的操作,从而产生性能上的开销。
int i = 5;
object o = i;
int j = (int)o;

那么我想问的是对枚举进行显式类型转换时,比如以下代码:
directionByte = (byte)myDirection;

1、会发生装箱/拆箱的操作吗?
2、会产生性能的开销吗?

0

1个回答

这种性能的损耗是非常微弱的,不用太纠结

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# 隐式转换和显式转换
using System; namespace ConsoleApp1 { class Program { class Rect { int a=99; double b = 5.5; //! 3 public static implicit operat
多线程的优劣/性能/系统开销
转自:http://hi.baidu.com/goga/blog/item/ef7e8326af7ae31f8b82a103.html 线程创建之前 1.系统为线程分配并初始化一个线程内核对象; 2.系统为每个线程保留1MB的地址空间(按需提交)用于线程用户模式堆栈; 3.系统为线程分配12KB(左右)的地址空间用于线程的内核模式堆栈。 线程创建之后 4.Windows调用当前进程中的
C#的隐式类型转换和显式类型转换
C#的隐式类型转换和显式类型转换 C#的隐式类型转换     在C#语言中,一些预定义的数据类型之间存在着预定义的转换。比如,从int类型转换到long类型。C#语言中数据类型的转换可以用分为两 类:隐式转换(implicit conversions)和显式转换(explicit conversions)。这篇文章我们将详细介绍这两类转换。 1. 隐式类型转换 隐式转换就是系统默认的、不
c#中隐式转换和显示转换(强制转换)的区别
隐式转换:同一类型之间的转换,一般为高向低转换,且转换过程中不带类型修饰符。 例如:                  int a = 25;                 float b = a/3;    显示转换:不同类型间可以转换,转换过程中必须带类型修饰符,也叫强制转换。 例如:                                  
虚函数所造成的性能损失
假设在一个线程同步环境中,有类似下面所示的代码段://进入线程同步nNum++;//退出线程同步以win32为例,如我们所知,线程同步工具有临界区,互斥体,信号量。我们可以任意选择一个,为了简单很可能我们就选择了临界区。假如我们需要同步的代码非常简单,我非常建议不需要使用c++的任何功能。但是,很可能没这么幸运,很可能你的代码会被很多人修改,很可能同步的时候需要异常退出,很可能同步的里面还有点逻辑
读写锁的性能问题及替代方案
这两天看了一些资料,谈到了读写锁的性能问题,并建议不要使用读写锁,而采取其他方案
关于多状态枚举值比较判断的问题
枚举在开发中经常用到,可以表示一种事物的几种不同状态或者类型等,于是我们通常要根据当前的状态来和枚举元素进行比较来得到当前是什么状态,但是我发现一个问题,枚举值的比较真的是按照我们给枚举赋的值来单纯地比较大小或者是否相等来得出结论的吗?废话不多说,看代码: 暂且定义一个这样的枚举并且分别赋值 然后我们来做一下最简单的if判断并输出看一下结果: ...
《随笔八》——C#中的 “ 显式和隐式转换、装箱转换、拆箱转换、用户自定义转换、is运算符、as运算符”
目录 什么是转换 转换的类型 (289P) 隐式转换 (287P) 显式转换 (288P) 使用关键字 checked 和 unchecked 来设置“ 溢出检测上下文” (291P) checked 和 unchecked 运算符(291P) checked 和 unchecked 语句 (292P) 显式数字转换 (292P) 整数类型到整数类型 (293P) float...
Linq:无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)
【前言】    最近项目中需要把我们的第一版系统的SQL语句转换成Linq表达式,对于之前没有接触过Linq表达式的我,研究的过程中真的遇到了好多问题!最头疼的就是: “无法将类型“int?”隐式转换为“int”。存在一个显式转换(是否缺少强制转换?)”    今天就来说说这个令人头疼的bug! 【正文】 一、bug描述: 1、When——何时出现的? 此问题是出现在我写li
枚举类型排序
1.对于数组的排序方法如下: String[] names = {"王林",  "杨宝", "李镇", "刘迪", "刘波"};   Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));//升序;    System.out.print
C# 显式转换关键字 explicit
不同于隐式转换,显式转换运算符必须通过转换的方式来调用。 如果转换操作会导致异常或丢失信息,则应将其标记为 explicit。 这可阻止编译器静默调用可能产生意外后果的转换操作。 省略转换将导致编译时错误 CS0266。 该引用摘自:explicit(C# 参考) 显示转换关键字explicit能向阅读代码的每个人清楚地指示您要转换类型。 该引用摘自:使用转换运算符(C...
C#中判断某个值是否存在于枚举
我有一个枚举类型: #region -酒的种类- public enum WineType { 白酒 = 3, 葡萄酒 = 4, 洋酒 = 5, 老年陈酒 = 16, 啤酒 = 17 } #end...
异步性能:了解 Async 和 Await 的成本
异步编程长时间以来一直都是那些技能高超、喜欢挑战自我的开发人员涉足的领域 — 这些人愿意花费时间,充满热情并拥有心理承受能力,能够在非线性的控制流程中不断地琢磨回调,之后再回调。 随着 Microsoft .NET Framework 4.5 的推出,C# 和 Visual Basic 让我们其他人也能处理异步工作,普通程序员也可以像编写同步方法一样轻松编写异步方法。 不再使用回调。 不再需要
C#的隐式和显示类型转换
关于隐式转换和显示转换,每种语言都有的,C#中当然也不例外。一般常用到的场合,一种是写运算表达式的时候,要保持整体的数据类型一致和计算准确,比如有一个变量a是int型,但是它是通过加减乘除得到的,那么在运算中就要考虑用显示转换,除的运算需要转换成float或double,再把结果强制转换为int;再一个就是传参数的时候,需要注意哪些需要显示转换,或者对集合赋值的时候也要注意类型的问题。 1. 隐
C#显示与隐式转换操作符
C#类中显示与隐匿转换操作符同时只能实现一个// 显示转换操作符 static public explicit operator Salary(int n) { Salary s = new Salary(n); return s; } // 隐式转换操作符 static public implicit operator Salary(int n) { Salary
函数宏与函数调用开销
在阅读K&R中macro substitution一节中提到 [quote]One practical example comes from , in which getchar and putchar are often defined as macros to avoid the run-time overhead of a function call per chara...
C# 深度剖析try catch finally及其性能影响
关于try-catch-finally的使用本文不做探讨,详见try-catch参考。   本文想真正剖析的是在代码中使用try-catch-finally块对于性能的影响。很多程序员认为:只要没有异常抛出,try就没有额外的性能开销。为此,我们先来看微软官方给出的解释
选择线程数目时谨慎考虑线程切换开销
合理设计并发的缓冲池大小才能有效提升系统性能
c#中s=s+1与s+=1的区别
 s=s+1与s+=1在官方网站上据说是等效的,可是在实际的应用中,它们之间还是有一点小小的区别,这些区别造成了一些困惑,现在就对这些区别做一些解释。    前几天一个很牛的朋友问我:“s=s+1与s+=1有什么区别?”,我认为他在开玩笑,因为以这个朋友的实力,不会不知道这个的,我认为这是一个陷阱,赶快到MSDN上 进行查询,得到的结果是:使用 += 赋值运算符的表达式,x +=
java 内存消耗以及ThreadLocal理解
1、关于java内存消耗:内存的消耗原因:大并发量。 因为请求量很大,造成你要创建大量的线程,而且不能及时的清除和回收已经执行完的变量。导致内存溢出等。这时候,你应该创建钩子,去关闭线程。比如中断线程,interrupt  、设置布尔值、或放一个特殊对象在循环中。      b、关闭线程时,要先Thread.join(3000),因为关闭线程要一段时间。      c、线程 stop 方法是一
[我眼中的C#]显式转换和隐式转换
上节介绍了15中基础的变量类型,那么这些变量之间如何转换呢?下面我们来介绍一下(本节介绍的是值类型(存储在栈上),而引用类型(存储在堆上)和引用类型的转换需要通过CLR预定义的类进行)。 转换分为显式转换和隐式转换,显式转换就是需要我们通过代码去控制的使其变量类型发生改变的转换,而隐式转换不需要我们去操作,编译器会自动执行 进行转换的原则就是内存的空间能够放的下,上节我们了解了不同变量都有它的取
Java基础——隐式转换vs强制转换
在定义变量时,有许多要注意的问题,一不小心就会出现损失精度或者不兼容类型等问题。 例如:     1.定义长整型数据时,必须加后缀l或L               long l =123456789012345L     2.定义单精度类型时(7-8位有效数字),必须加后缀 f 或 F               float f = 12.5F           3. bo
【Java程序优化】- 深度剖析 List 性能分析
List 是重要的数据结构之一。最常用的的便是: ArrayList、Vector 和 LinkedList 三种了
AOP 底层技术性能测试与比较
Spring对AOP的支持Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。Spring创建代理的规则为:1、默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了 2、当需要代理的类不是代理接口的时候,Spring会切换为使用
C#中枚举值对应的值相同时的情况
C#的枚举根据枚举对应的值转换成枚举类型时,会根据二分查找来得到值所对应的枚举值。 反编译代码为:
爱测未来性能-你不得不知道的WebSocket
一、WebSocket出现的背景 过去,创建需要在客户端和服务之间双向通信(例如,即时消息和游戏应用)的web应用, 需要一个滥用的 HTTP 来轮询服务器进行更新但以不同的 HTTP 调用发生上行通知。 以前网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的时间间隔(如每隔1秒),由浏览器对服务器发出HTTP request,然后由服务
对枚举值(Enum)进行位操作(AND & OR)
这里我们可以解释为什么第三个值ShowToolbox可以为4,5..而不能为3。 也就是说它的值不应该是前几项值的复合值。【我的理解是 不能前几位的和】 有一个比较简单的方法就是用2的n次方来依次为每一项赋值,例如 1,2,4,8,16,32,64.....  对枚举值(Enum)进行位操作(AND & OR) 这是我在博客园的第一篇随笔,其实也不能说是
【Unity】Unity中影响性能的几个因素
影响性能的因素 首先,我们得了解,影响游戏性能的因素哪些,才能对症下药。对于一个游戏来说,有两种主要的计算资源:CPU和GPU。它们会互相合作,来让我们的游戏可以在预期的帧率和分辨率下工作。CPU负责其中的帧率,GPU主要负责分辨率相关的一些东西。 总结起来,主要的性能瓶颈在于: CPU 过多的Draw Calls 复杂的脚本或者物理模
java GC性能优化
★JVM的内存   在Java虚拟机规范中(具体章节请看这里),提及了如下几种类型的内存空间:   ◇栈内存(Stack):每个线程私有的。   ◇堆内存(Heap):所有线程公用的。   ◇方法区(Method Area):有点像以前常说的“进程代码段”,这里面存放了每个加载类的反射信息、类函数的代码、编译时常量等信息。   ◇原生方法栈(Native Method Stack):主
Oracle DB 隐式和显示数据类型转换
转换函数 除了Oracle  数据类型,还可以使用美国国家标准协会(ANSI) 、DB2 和SQL/DS  数据类型定义Oracle DB 中表的列。但是,Oracle Server  会在内部将这些数据类型转换为Oracle 数据类型。 在某些情况下,Oracle Server  会收到数据类型与预期的数据类型不同的数据。发生这种情况时,Oracle Server  可自动将该数据转
C#匿名函数内存泄漏
public static CheckBox CreateSettingCheckBox(String content, Thickness thickness, String ConfigureKey) { CheckBox checkBox = new CheckBox() { Content =...
架构师之enum枚举之(一)-----------如何判断枚举和字符串相等(最简便方法)
1.前言. 如题. 2.代码. (1)代码串 [code="java"] public class EnumTest { enum A { a, b, c, d; } public static void main(String[] args) { A aa = A.valueOf(A.class, "a"); ...
LUA 打印的性能开销
local function fun1() local t = {1,2,3,4,5,6,7,8,9,0} for i = 1, 1000000 do print(table.concat(t)) end; end; local function fun2() local t = {"1","2","3","4","5","6","7","8","
C++下基本语句的开销相对大小
提高算法性能最主要的手段是提高渐进复杂度,从一个O(n^2)的算法改进到O(nlogn)的算法可以带来巨大的性能提升。然而,在许多情况下,我们需要对多个复杂度在渐进意义上相等的算法进行比较,这时就要对算法复杂度的所谓“常数项”进行分析了。著名的快速排序算法之所以在众O(nlogn)算法中脱颖而出成为“快速”排序,其中一部分要归功于连续的内存读取节省了CPU在IO上的开销(因而优于堆排序),另一部分
关于https对服务器性能的消耗
https 对服务器性能的影响https是在SSL/TLS之上的 http协议,https对服务器资源的消耗,主要看SSL/TLS本身消耗多少服务器资源。
系统性能调优(6)----Java异常处理性能优化
执行一个catch代码块和抛出一个异常花费是很高的,这个过程中的性能损耗主要是由于当创建一个异常时要获得线程栈的一个快照。抛出异常首先要创建一个新的对象Throwable类的构造函数调用名为fillInStackTrace的方法,fillInStackTrace方法检查堆栈,收集调用跟踪信息。由于在处理过程中创建了一个新的对象,所以说只要有异常被抛出,JVM就必须调整调用堆栈,系统资源开销也就增大
将文本输入的字符串与枚举中的值进行比较
确保用户输入的的是我们想要的,一种方法是将选项放到枚举中,然后接受文本输入的字符串与枚举中的值进行比较,再新建一个集合接受。假设一个enum:public enum A { a,v,c,d }比较(由于我枚举中的 选项都是小写的):Scanner sc=new Scanner(System.in); while(true){ System.out.pr
加载 MonoBehaviour 类时, public属性因为序列化所产生的性能开销问题
我们都知道 MonoBehaviour 类的 public 属性是会被unity自动序列化的,然后你就可以直接在对象上设置参数了,像这样: 但是这样的开销其实挺大的。我们现在创建2种类,一种是集成MonoBehaviour的,绑定在cube上,我们来加载1000个进来。一种是普通的c#类,我们也加载1000个进来。(为什么加这么多,是因为加少了怕看不出区别来) 测试环境为Unity 4.6.
判断枚举值是否存在
判断枚举值是否存在 枚举 Enum IsDefined SubMain BUGSoft
KVM的性能开销
1. 磁盘使用virtio会快差不多2倍 2. CPU测试,大概慢33% 3. 内存复制,大概慢37% 4. thread,大概15% 5. mutex,一致 6. IO, 50%  ((116.74Mb/sec  vs  50.654Mb/sec  vs 17.224Mb/se))    物理机测试,因为磁盘是raid10, 读速度远高于写)    rndrd 1.8Gb/se
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 对学生进行组班 大数据对数学基础有要求吗