草庐IT

const_cast

全部标签

c# - 理解给定的计算(cast + multiplication)

(int)((float)10.9*10)的计算结果为108。为什么?IMO(int)-cast应该在乘法运算后求值。 最佳答案 有趣的是,这里的问题是表达式是在编译时计算的,显然使用预期的单精度数学。这在调试和发布版本中都会发生://thisreplacesthewholeoperationIL_0001:ldc.i4.s108IL_0003:stloc.0IL_0004:ldloc.0IL_0005:callvoid[mscorlib]System.Console::WriteLine(int32)虽然案例varf=((floa

c# : Why is a cast needed from an Enum to an INT when used in a switch statement? ,枚举是整数

谁能告诉我为什么我需要从我的枚举中转换为Intswitch(Convert.ToInt32(uxView.SelectedValue)){case(int)ViewBy.Client:如果我删除强制转换(int),它会失败并提示我必须使用强制转换。这是我的枚举,枚举是整数....有人知道吗?publicenumViewBy{Client,Customer} 最佳答案 在C#中,enum不仅仅是数字。相反,它们是与类型相关联的数字或在上下文中具有名称的数字。要避免在case语句中进行强制转换,您可以在switch中进行强制转换:swi

c# - LINQ .Cast() 扩展方法失败但(类型)对象有效

为了在某些LINQtoSQL对象和DTO之间进行转换,我们在DTO上创建了显式转换运算符。这样我们就可以执行以下操作:DTOTypeMyDTO=(LinqToSQLType)MyLinq2SQLObj;这很有效。但是,当您尝试使用LINQ.Cast()扩展方法进行转换时,它会抛出一个无效的转换异常,指出无法将类型Linq2SQLType转换为类型DTOType。即以下不起作用ListNames=dbContact.tNames.Cast().ToList();但下面的工作正常:DAL.tNameMyDalName=newDAL.tName();DTO.NameMyDTOName=(DT

c# - 为什么C#中没有const成员方法和const参数?

与C++不同,C#中没有任何常量成员方法和常量参数。这是什么原因? 最佳答案 首先,不要求我们提供不实现某项功能的理由。功能非常昂贵;必须有理由实现一项功能,而不是不实现一项功能的理由。其次,C#不是C++或C的克隆。仅仅因为某项功能是用其他语言编写的并不能成为将其放入C#的理由。第三,“const”在C和C++中被深深地、悲惨地破坏了。“const”不能保证您实际上可以依赖。如果您是采用常量引用的方法的调用者,那么您无法保证该方法遵循常量;该方法有多种改变const引用的方法。如果您是const引用的消费者,那么您无法保证底层对象

c# - 只读 ("const"-like) C# 的函数参数

我有C++背景,习惯于将const关键字添加到函数定义中,以使对象以只读值传递。但是,我发现这在C#中是不可能的(如果我错了请纠正我)。经过一番谷歌搜索后,我得出的结论是,创建只读对象的唯一方法是编写一个仅具有“get”属性的接口(interface),然后将其传入。优雅,我必须说。publicinterfaceIFoo{IMyValInterfaceMyVal{get;}}publicclassFoo:IFoo{privateConcreteMyVal_myVal;publicIMyValInterfaceMyVal{get{return_myVal;}}}我会将它传递给:publi

c# - 如何在 C# 中访问属性或 const 的 Description 属性?

如何访问常量或属性的Description属性,即publicstaticclassGroup{[Description("Specifiedparent-childrelationshipalreadyexists.")]publicconstintParentChildRelationshipExists=1;[Description("Userisalreadyamemberofthegroup.")]publicconstintUserExistsInGroup=2;}或publicstaticclassGroup{[Description("Specifiedparent-c

javascript - 所以我使用 Javascript const 关键字,在 IE 中会发生什么?

我知道const关键字已经在除IE10版本之外的浏览器中全面实现,但它可行吗?如果有人在IE10上跳转到我的站点MDN有关const关键字的文档在底部提供了一个方便的图表,它告诉我不仅IE,而且许多移动浏览器也不支持它。我应该废弃它并使用var吗? 最佳答案 以Babel为例,它是ECMAScript2015(ES6)到ECMAScript5的转译器。如果你写:consta=123;输出:"usestrict";vara=123;如果在不受支持的浏览器上破坏您的代码的可能性还不够,我认为应该是。

javascript - Javascript 中的 const 关键字作用域

1.>>>consta=22.>>>vara=33.>>>a=44.>>>a//print2为什么允许运行3号线?const似乎比没有任何关键字更“全局”... 最佳答案 const范围被定义为“block范围”(其范围仅限于声明它的block)。MDNdocumentation:Constantsareblock-scoped,muchlikevariablesdefinedusingtheletstatement.Thevalueofaconstantcannotchangethroughre-assignment,anditc

javascript - Mongoose .js CastError : Cast to number failed for value "[object Object]" at path "undefined"

将Mongoose.js与node.js结合使用。我有这个架构:varPhoto=newSchema({URL:String,description:String,created_by:{type:ObjectId,ref:'User'},created_at:{type:Date,default:Date.now()}});varUser=newSchema({name:{type:String,index:true},email:{type:String,index:true,unique:true}});//TaskmodelvarTask=newSchema({title:St

javascript - 未为立即调用的函数提升 const 变量

我在玩弄新的ECMASCRIPT-6const关键字。我不理解关键字的某一特定行为。假设我有两个函数第一个案例(function(){console.log(_t);const_t=10;})();和第二种情况functiont(){console.log(_y);const_y=11;}t();对于第一种情况,输出是(不明白为什么)ReferenceError:can'taccesslexicaldeclaration`_t'beforeinitialization对于第二种情况,输出是(好的)undefined第二种情况的输出符合预期,但我不明白为什么第一种情况的结果会抛出错误。从