将十进制转换为二进制?
我想知道最好的方法是从一种无效类型转换为另一种"兼容"无效类型的最佳方法(在更安全和简洁的意义上). 具体来说,从十进制转换?加倍?可以使用: 完成 public double? ConvertToNullableDouble(decimal? source) { return source.HasValue ? Convert.ToDouble(source) : (double?) null; } 有什么更好的方法吗?也许利用标准转换? 解决方案 内置的胜利!刚刚在VS2012 和 vs2010中测试了这一点: decimal? numberDecimal = new Decimal(5); decimal? nullDecimal = null; double? numberDouble = (double?)numberDecimal; // = 5.0 double? nullDouble = (double?)nullDecima
0 2024-04-17
编程技术问答社区
对于'=='与Nullable<T>的参数顺序
以下两个C#函数仅在将左/右参数顺序交换为 equals 运算符==方面有所不同. (IsInitialized的类型是bool).使用 C#7.1 和 .net 4.7 . static void A(ISupportInitialize x) { if ((x as ISupportInitializeNotification)?.IsInitialized == true) throw null; } static void B(ISupportInitialize x) { if (true == (x as ISupportInitializeNotification)?.IsInitialized) throw null; } 但是,第二个 il code 似乎更为复杂.例如, b 是: 36个字节更长(IL代码); 调用其他功能,包括newobj和initobj; 声明四个当地人,而只有一个. i
0 2024-04-17
编程技术问答社区
不能隐式转换bool类型?
我正在尝试转换我的无效bool值,并且我遇到了这个错误. Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?) 例如: public virtual bool? MyBool { get; set; } if (!MyBool){} 解决方案 作为错误状态,您不能在条件中使用bool?. (如果是null?) 会发生什么 相反,您可以编写if (MyBool != true)或if (MyBool == false),具体取决于您是否要包括null. (您应该添加一个评论来解释) 其他解决方案 您必须使用mybool.value 例如: if (!MyBool.Value) { } 但是,您应该测试它确实具有一个价值.这测试了MyBool具有一个值,并且是错
0 2024-04-17
编程技术问答社区
C#中的Nullable方法参数
重复的问题 将null参数传递给c#方法 我可以在.NET 2.0的C#中执行此操作吗? public void myMethod(string astring, int? anint) { //some code in which I may have an int to work with //or I may not... } 如果没有,我可以做类似的事情吗? 解决方案 是的,假设您故意添加了字形,您的确是: public void myMethod(string astring, int? anint) anint现在将拥有HasValue属性. 其他解决方案 取决于您要实现的目标.如果您想删除anint参数,则必须创建一个过载: public void myMethod(string astring, int anint) { } public void myMethod(string astring) { myM
0 2024-04-17
编程技术问答社区
C#在使用反射时确定一个Nullable属性的DateTime类型
我有一个问题,即如何确定对象的无效属性类型. ObjectA有一个属性DateTime? CreateDate; 当我像以下代码那样迭代其属性时,我如何检查属性是Nullable DateTime类型? foreach (PropertyInfo pi in ObjectA.GetType().GetProperties()) { //do the compare here } 解决方案 pi.PropertyType == typeof(DateTime?) 其他解决方案 pi.PropertyType == typeof(Nullable); 其他解决方案 尝试: property.PropertyType.Equals(typeof(DateTime?))
0 2024-04-17
编程技术问答社区
Nullable<int>是 "预定义的值类型 "吗-或者Equals()和==在这里是如何工作的?
对于我自己的equals()方法实现,我想检查一堆内部字段.我这样做: ... _myNullableInt == obj._myNullableInt && _myString == obj._myString && ... 我假设,这将比较包括null在内的值,而不是对象地址(作为参考euqality比较操作将),因为: 这样说是"预定的价值类型" 在此msdn中DOC在这里. 我假设Nullable是这样的"预定值类型",因为它在System命名空间中,根据此msdn doc . 我是否可以假设在此处比较这些值? 注意:单位测试显示"是",但是我想对他人放心,以防万一我错过了一些东西. 解决方案 在C#中,有一个概念称为"提升操作员",在语言规范的第7.3.7节中描述(版本5下载): 升起的操作员允许在不可删除的价值类型上操作的预定义和用户定义的运算符,也可以与这些类型的可随机形式一起使用.升起的操作员是由满足某些要求的预定义和用
0 2024-04-17
编程技术问答社区
取两个可空值中的较大值
假设我有两个无效的整数: int? a = 10; int? b = 20; 我想拿最大的非零值,以便如果两个值为null,则结果为null. 我可以写一些漫长的东西,例如: int? max; if (a == null) { max = b; } else if (b == null) { max = a; } else { max = a > b ? a : b; } 对于我的喜好,这感觉有点太笨拙(可能容易出错).返回更大值的最简单方法是什么? 解决方案 这适用于任何无效: Nullable.Compare(a, b) > 0 ? a : b; 其他解决方案 使用NULL合并操作员在一行中: int? c = a > b ? a : b ?? a; 其他解决方案 这些行显示了带有小技巧的必要逻辑: if (a == null) return b; // handles b== null also
0 2024-04-17
编程技术问答社区
将一个泛型限制在可以为空的事物上
我想限制一个通用的,我将编码为null的任何东西.基本上就是任何类 + System.Nullable(例如int?等). 对于班级部分,这很容易: public class MyGeneric where T : class {} 但是,这不允许我这样做: var myGeneric = new MyGeneric(); 或以下: var myGeneric = new MyGeneric>(); 编译器抱怨: 错误CS0452:类型为'int?'必须是一种参考类型,以便将其用作通用类型或方法中的参数't'test.mygeneric' 所以我尝试了addind System.Nullable作为T接受的类型: public class MyGeneric where T : class, System.Nullable {} 但不会.编译器返回以下错误: 错误CS0717:'s
0 2024-04-17
编程技术问答社区
这种Nullable<T>行为的理由是什么?
我在Nullable和隐式转换之间的相互作用中遇到了一些有趣的行为.我发现,从值类型中为参考类型提供隐式转换,它允许将Nullable类型传递给需要参考类型的函数,而当我期望汇编错误时.以下代码证明了这一点: static void Main(string[] args) { PrintCatAge(new Cat(13)); PrintCatAge(12); int? cat = null; PrintCatAge(cat); } private static void PrintCatAge(Cat cat) { if (cat == null) System.Console.WriteLine("What cat?"); else System.Console.WriteLine("The cat's age is {0} years", cat.Age); } class Cat {
0 2024-04-17
编程技术问答社区
在C#中,结构真的不能为空吗?
以下是一些代码,证明我无法声明并初始化结构类型为null. nullable 类型是一个结构,那么我为什么可以设置它为null? Nullable b = null; if (b.HasValue) { Console.WriteLine("HasValue == true"); } //Does not compile... Foo f = null; if (f.HasValue) { Console.WriteLine("HasValue == true"); } 其中Foo定义为 public struct Foo { private bool _hasValue; private string _value; public Foo(string value) { _hasValue = true; _value = value; } public b
0 2024-04-17
编程技术问答社区
XmlSerializer和nullable属性
我有一个具有许多可无效属性的类,我希望与XML序列化为属性.显然,这是一个禁忌,因为它们被认为是"复杂类型".因此,相反,我实现了 *指定的模式,在其中创建一个添加 *值,并且 *指定属性如下: [XmlIgnore] public int? Age { get { return this.age; } set { this.age = value; } } [XmlAttribute("Age")] public int AgeValue { get { return this.age.Value; } set { this.age = value; } } [XmlIgnore] public bool AgeValueSpecified { get { return this.age.HasValue; } } 效果很好 - 如果"年龄"属性具有值,则将其序列化为属性.如果没有值,则不会序列化. 问题是,正如我提到的,我的
0 2024-04-17
编程技术问答社区
c#struct,如何分配零值?
我有一个列表: List 出于某种原因,它不允许我为其分配空值.如果我不想与结构相关,该怎么办? 解决方案 使用 nor typles : List 您不能将null分配给列表的一个元素,因为struct是值类型,而null表示一个空指针,因此只能分配给参考类型变量. 还要注意,List您使用的是.net中不存在!也许您想要 Dictionary ? 其他解决方案 在C#A中,结构是"值类型",不能为null. 如果您真的需要能够将其删除,然后通过添加尾随的问号将其变成"无效"类型. ,您可能应该首先对此的细节进行更重要的研究 - 很可能您真的不想要一个" struct",但使用"班级"会更好. 其他解决方案 除非您定义了自定义通用集合,否则List在 System.Collections.Generic 名称空间.您是否宁愿Dictionary
0 2024-04-17
编程技术问答社区
C#编译器抛出语言版本(LangVersion)参考错误 "Invalid 'nullable' value: 'Enable' for C# 7.3"
我有一些解决方案. netstandard2.1 8.0 enable 注意:这些设置在您的.csproj文件中找到. 问题是有些项目编译良好,有些项目有错误: 无效的"无效"值:C#7.3的"启用".请使用语言 版本"预览"或更大的版本 我有Visual Studio 16.2 Preview 2和.Net Core 3预览6.这是预览中的错误还是我做错了什么? 解决方案 就我而言,当我将目标框架从.NET标准2.1更改为.NET标准2.0时,我遇到了Visual Studio 2022的问题.我通过在.csproj文件和重新启动Visual Studio中删除enable
0 2024-04-17
编程技术问答社区
将字符串转换为可归零的日期时间
可能的重复: 如何使用dateTime.tryparse与可Nullable ableable ? 我有这条代码 DateTime? dt = Condition == true ? (DateTime?)Convert.ToDateTime(stringDate) : null; 这是将字符串转换为无效日期时间的正确方法,还是有没有直接的方法可以转换而不将其转换为dateTime 转换为dateTime,又有 casting casting casting dateTime? 解决方案 您可以尝试以下操作: - DateTime? dt = string.IsNullOrEmpty(date) ? (DateTime?)null : DateTime.Parse(date); 其他解决方案 您能够构建一种方法: public static DateTime? TryParse(string stringDate) { DateTim
0 2024-04-17
编程技术问答社区
什么是'long?'数据类型?
我要介绍另一个开发人员编写的一些代码,不确定long?是什么意思: protected string AccountToLogin(long? id) { string loginName = ""; if (id.HasValue) { try {.... 解决方案 long与Int64 相同 长数据类型 ?表示它是无效的 无效类型可以代表 其正常值的范围 基础价值类型,加上 其他空值 nullable类型 无效的示例: int? num = null; if (num.HasValue == true) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } 这允许您实际检查null值,而不是尝试为某些东西分配任意值以查看某物是否失败
0 2024-04-17
编程技术问答社区
使用XmlSerializer时如何排除空属性
我正在序列化这样的课程 public MyClass { public int? a { get; set; } public int? b { get; set; } public int? c { get; set; } } 所有类型都是无效的,因为我希望在序列化此类型的对象时存储的最小数据.但是,当仅使用" A"序列序列化时,我会得到以下XML 3 如何将其设置为仅获取非null属性的XML?所需的输出将为 3 我想排除这些空值,因为将有几个属性,并且它存储在数据库中(是的,这不是我的调用),所以我想保持未使用的数据最小. 解决方案 我想您可以创建一个XMLWriter,该XMLW
0 2024-04-17
编程技术问答社区
如何在Entity Framework Core中调试和修复'Nullable对象必须有一个值'?
我正在用这种方法进行投影: public async Task Get(int tradeId) { var firstOrDefaultAsync = await context.EvgTGTrade .Where(x => x.IdTrade == tradeId) .Select(trade => new TradeDetail { Id = trade.IdTrade, Code = trade.CdTrade, Description = trade.DeTrade, Comments = trade.DeComentarios, TypeId = trade.IdTipoTrade, BrokerId = trade.EvgTGBrokerTrad
0 2024-04-17
编程技术问答社区
如何将十进制转换为十进制?
可能是一个简单的问题,但是我尝试所有转换方法!而且它仍然有错误! 你会帮我吗? 小数点? (无效的小数)到十进制 解决方案 尝试使用??操作员: decimal? value=12; decimal value2=value??0; 0是当decimal?为null时所需的值. 其他解决方案 有很多选择... decimal? x = ... decimal a = (decimal)x; // works; throws if x was null decimal b = x ?? 123M; // works; defaults to 123M if x was null decimal c = x.Value; // works; throws if x was null decimal d = x.GetValueOrDefault(); // works; defaults to 0M if x was null decimal e =
0 2024-04-17
编程技术问答社区
添加Nullable int时保持null?
我想添加无效的int?并保持null所有值null. 我想要这个结果: 1 + 2 = 3 1 + null = 1 null + null = null O + null = 0 问题是,如果我用null总和一个值,则结果为null int? i1 = 1; int? i2 = null; int? total = i1 + i2; // null 我已经看到了这个线程: 是否有更优雅的方法可以添加无效的ints?/a> linq: var nums = new int?[] {null, null, null}; var total = nums.Sum(); // 0 我得到0,我想要null ... 我发现的唯一方法是发挥功能: static int? Sum(params int?[] values) { if (values.All(item => !item.HasValue)) return null;
0 2024-04-17
编程技术问答社区
通过反射创建的Nullable,其HasValue = false,只给定一个`Type'类型的参数
给定一个类型参数,该参数是Nullable,如何创建具有HasValue = false>? 的类型的实例 换句话说,完成此代码: //type is guaranteed to implement Nullable public static object Create(Type type) { //Instantiate a Nullable with reflection whose HasValue = false, and return it } 我的尝试,因为没有默认构造函数: static void Main(string[] args) { Console.WriteLine(Create(typeof(Nullable))); Console.ReadLine(); } //type is guaranteed to be implement from Nullable public stati
0 2024-04-17
编程技术问答社区