草庐IT

大有可为

全部标签

c# - 表是可为空的 DateTime,但 DataSet 抛出异常?

我正在尝试使用数据集设计器从查询创建数据表。我把这个记下来就好了。使用的查询从数据库返回一个可为空的日期时间列。但是,当谈到这段代码时:DataSet1.DataTable1DataTabletable=adapter.GetData();这从以下位置抛出StrongTypingException:[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]publicSystem.DateTimeevent_start_date{get{try{return((global::System.DateTime)(this[thi

c# - 取两个可为空的值中的较大者

假设我有两个可为空的整数:int?a=10;int?b=20;我想取最大的非空值,这样如果两个值都为空,则结果为空。我可以写一些冗长的东西,比如:int?max;if(a==null){max=b;}elseif(b==null){max=a;}else{max=a>b?a:b;}根据我的喜好,这感觉有点太笨重(而且可能容易出错)。返回更大值的最简单方法是什么,这也说明了空值的可能性? 最佳答案 在一行中使用空合并运算符:int?c=a>b?a:b??a; 关于c#-取两个可为空的值中的

c# - 为什么在构建将运算符 == 提升为可为 null 的表达式时,对泛型和非泛型结构的处理方式不同?

这看起来像是在将通用结构的操作数提升为null时出现的错误。考虑下面的虚拟结构,它覆盖了operator==:structMyStruct{privatereadonlyint_value;publicMyStruct(intval){this._value=val;}publicoverrideboolEquals(objectobj){returnfalse;}publicoverrideintGetHashCode(){returnbase.GetHashCode();}publicstaticbooloperator==(MyStructa,MyStructb){returnf

c# - 哪个更好?强制转换可为 null 的类型或使用 Value 属性检索值?

一种方式比另一种方式有性能优势吗?是否有其他理由选择其中之一? 最佳答案 Isthereaperformancebenefittoonewayovertheother?没有。它们都编译为完全相同的IL。强制转换是Value属性的语法糖。这段代码:int?x=null;Console.WriteLine(x.Value);Console.WriteLine((int)x);编译为这些IL指令,忽略nop:(您可以使用ildasm、ILSpy、DotPeek等自行测试)//int?x=null;ldloca.s0initobjvalue

c# - 可为空的日期时间转换

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:c#whycantanullableintbeassignednullasavalue如果论坛没有lastPostDate,我试图将日期时间为null的reader[3]对象转换为null,但它说我缺少转换。错误:Typeofconditionalexpressioncannotbedeterminedbecausethereisnoimplicitconversionbetweenand'System.DateTime'publicclassForums{publicListGetForums(){usin

c# - XmlSerializer 和可为空的属性

我有一个包含大量Nullable属性的类,我希望将其作为属性序列化为XML。这显然是一个禁忌,因为它们被认为是“复杂类型”。因此,我改为实现*Specified模式,我在其中创建一个附加*Value和*Specified属性,如下所示:[XmlIgnore]publicint?Age{get{returnthis.age;}set{this.age=value;}}[XmlAttribute("Age")]publicintAgeValue{get{returnthis.age.Value;}set{this.age=value;}}[XmlIgnore]publicboolAgeVa

c# - 在 C# 中,为什么不能将条件运算符隐式转换为可为 null 的类型

我很好奇为什么隐式转换在...中失败int?someValue=SomeCondition?ResultOfSomeCalc():null;以及为什么我必须执行显式转换int?someValue=SomeCondition?ResultofSomeCalc():(int?)null;在我看来,编译器拥有做出隐式转换决定所需的所有信息,不是吗? 最佳答案 C#3.0规范的相关部分是7.13,条件运算符:?:运算符的第二个和第三个操作数控制条件表达式的类型。令X和Y为第二个和第三个操作数的类型。然后,如果X和Y是同一类型,那么这是条件的

c# - 将对象转换为十进制? (可为空的十进制)

如果在属性的setter中有这个:decimal?temp=valueasdecimal?;值="90"但是在转换之后,temp是null...进行此转换的正确方法是什么? 最佳答案 只有类型相同才能拆箱!您不能对不包含目标值的object进行拆箱。您需要的是符合以下内容的内容decimaltmpvalue;decimal?result=decimal.TryParse((string)value,outtmpvalue)?tmpvalue:(decimal?)null;这会检查该值是否可以解析为decimal。如果是,则将其赋值给

c# - 有没有更优雅的方法来添加可为空的整数?

我需要添加大量nullableint类型的变量。我使用null合并运算符将它减少到每行一个变量,但我觉得有一种更简洁的方法可以做到这一点,例如我不能以某种方式将这些语句链接在一起吗,我之前在其他代码中看到过。usingSystem;namespaceTestNullInts{classProgram{staticvoidMain(string[]args){int?sum1=1;int?sum2=null;int?sum3=3;//inttotal=sum1+sum2+sum3;//inttotal=sum1.Value+sum2.Value+sum3.Value;inttotal=0

c# - 将字符串转换为可为空的日期时间

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowdoIuseDateTime.TryParsewithaNullable?我有这行代码DateTime?dt=Condition==true?(DateTime?)Convert.ToDateTime(stringDate):null;这是将字符串转换为NullableDateTime的正确方法吗,或者是否有一种直接转换方法,无需将它转换为DateTime,然后再转换为NullableDateTime?