草庐IT

const_cast-ing

全部标签

c# - 获取 "unable to cast PersistentGenericSet to ISet"错误

我收到这个错误:Unabletocastobjectoftype'NHibernate.Collection.Generic.PersistentGenericSet1[IocWinFormTestEntities.People]'totype'System.Collections.Generic.ISet1[IocWinFormTestEntities.People]'.实体:publicclassEvent{publicEvent(){this.People=newHashSet();}publicvirtualGuidId{get;privateset;}publicvirtua

c# - 获取 "unable to cast PersistentGenericSet to ISet"错误

我收到这个错误:Unabletocastobjectoftype'NHibernate.Collection.Generic.PersistentGenericSet1[IocWinFormTestEntities.People]'totype'System.Collections.Generic.ISet1[IocWinFormTestEntities.People]'.实体:publicclassEvent{publicEvent(){this.People=newHashSet();}publicvirtualGuidId{get;privateset;}publicvirtua

c# - 为什么C#限制了可以声明为const的类型集?

编译器错误CS0283指示只能将基本POD类型(以及字符串,枚举和空引用)声明为const。有人对这种限制的原理有理论吗?例如,能够声明其他类型的const值(例如IntPtr)会很好。我相信const的概念实际上是C#中的语法糖,它只是用文字值替换了名称的任何用法。例如,给定以下声明,任何对Foo的引用都将在编译时替换为“foo”。conststringFoo="foo";这将排除任何可变类型,因此也许他们选择了此限制,而不必在编译时确定给定类型是否可变? 最佳答案 从C#specification,chapter10.4-Con

c# - 为什么C#限制了可以声明为const的类型集?

编译器错误CS0283指示只能将基本POD类型(以及字符串,枚举和空引用)声明为const。有人对这种限制的原理有理论吗?例如,能够声明其他类型的const值(例如IntPtr)会很好。我相信const的概念实际上是C#中的语法糖,它只是用文字值替换了名称的任何用法。例如,给定以下声明,任何对Foo的引用都将在编译时替换为“foo”。conststringFoo="foo";这将排除任何可变类型,因此也许他们选择了此限制,而不必在编译时确定给定类型是否可变? 最佳答案 从C#specification,chapter10.4-Con

c# - C# 中的 private const 和 private readonly 变量之间有区别吗?

在C#中使用privateconst变量或privatestaticreadonly变量有区别吗(除了必须分配const一个编译时表达式)?因为它们都是私有(private)的,所以没有与其他库的链接。那会有什么不同吗?例如,它可以产生性能差异吗?实习字符串?有没有类似的? 最佳答案 好吧,您可以在属性中使用常量,因为它们作为编译时存在。您无法预测静态只读变量的值,因为.cctor可以从配置等初始化它。在使用方面,常量被嵌入到调用代码中。这意味着,如果您重新编译一个库dll来更改一个public常量,但不更改消费者,那么消费者仍将使

c# - C# 中的 private const 和 private readonly 变量之间有区别吗?

在C#中使用privateconst变量或privatestaticreadonly变量有区别吗(除了必须分配const一个编译时表达式)?因为它们都是私有(private)的,所以没有与其他库的链接。那会有什么不同吗?例如,它可以产生性能差异吗?实习字符串?有没有类似的? 最佳答案 好吧,您可以在属性中使用常量,因为它们作为编译时存在。您无法预测静态只读变量的值,因为.cctor可以从配置等初始化它。在使用方面,常量被嵌入到调用代码中。这意味着,如果您重新编译一个库dll来更改一个public常量,但不更改消费者,那么消费者仍将使

c# - 通过 cast 或 Convert.ToSingle() 将 double 转换为 float?

在C#中,我可以通过强制转换(float)或Convert.ToSingle()将double转换为float。doublex=3.141592653589793238463;floata=(float)x;floatb=Convert.ToSingle(x);a和b变得相等。这两种技术之间有什么区别吗?我应该更喜欢哪一个?为什么? 最佳答案 来自.NETreferencesource:publicstaticfloatToSingle(doublevalue){return(float)value;}因此,您的答案是它们在本质上完

c# - 通过 cast 或 Convert.ToSingle() 将 double 转换为 float?

在C#中,我可以通过强制转换(float)或Convert.ToSingle()将double转换为float。doublex=3.141592653589793238463;floata=(float)x;floatb=Convert.ToSingle(x);a和b变得相等。这两种技术之间有什么区别吗?我应该更喜欢哪一个?为什么? 最佳答案 来自.NETreferencesource:publicstaticfloatToSingle(doublevalue){return(float)value;}因此,您的答案是它们在本质上完

c# - 为什么 (int)(object)10m 抛出 "Specified cast is not valid"异常?

为什么这个显式转换会抛出Specifiedcastisnotvalid.异常?decimald=10m;objecto=d;intx=(int)o;但这行得通:intx=(int)(decimal)o; 最佳答案 装箱值只能拆箱为完全相同类型的变量。这个看似奇怪的限制是一个非常重要的速度优化,它使.NET1.x在泛型可用之前变得可行。您可以在thisanswer中阅读更多相关信息.您不想跳过多重投篮,简单的值类型实现了IConvertible接口(interface)。您可以使用Convert类调用:objecto=12m;inti

c# - 为什么 (int)(object)10m 抛出 "Specified cast is not valid"异常?

为什么这个显式转换会抛出Specifiedcastisnotvalid.异常?decimald=10m;objecto=d;intx=(int)o;但这行得通:intx=(int)(decimal)o; 最佳答案 装箱值只能拆箱为完全相同类型的变量。这个看似奇怪的限制是一个非常重要的速度优化,它使.NET1.x在泛型可用之前变得可行。您可以在thisanswer中阅读更多相关信息.您不想跳过多重投篮,简单的值类型实现了IConvertible接口(interface)。您可以使用Convert类调用:objecto=12m;inti