如何通过列名检查MySqlDataReader中的NULL?
如何在Open MySqlDataReader中检查一个NULL值? 以下内容不起作用;它总是击中else: if (rdr.GetString("timeOut") == null) { queryResult.Egresstime = "Logged in"; } else { queryResult.Egresstime = rdr.GetString("timeOut"); } rdr.IsDbNull(int i)仅接受列号,而不接受名称. 解决方案 var ordinal = rdr.GetOrdinal("timeOut"); if(rdr.IsDBNull(ordinal)) { queryResult.Egresstime = "Logged in"; } else { queryResult.Egresstime = rdr.GetString(ordinal); }//if 或 if(Convert.IsDB
0 2024-04-17
编程技术问答社区
为什么null的值不为假?
原因是什么原因null在条件下不评估false? 我首先考虑了为了避免使用=而不是==的错误,但这很容易被编译器禁止. if (someClass = someValue) // cannot convert someClass to bool. Ok, nice if (someClass) // Cannot convert someClass to bool. Why? if (someClass != null) // More readable? 我认为假设null表示false是很合理的.还有其他语言也使用此语言,因此我没有错误. 编辑:,我当然是参考参考类型. 丹尼尔·earwicker对作业错误的好评论...这是在不发出警告的情况下编译的,因为它评估为bool: bool bool1 = false, bool2 = true; if (bool1 = bool2) { // oops... false == true, an
0 2024-04-17
编程技术问答社区
当一个方法试图使用一个可能为空的字段时,应该抛出哪个异常?
我实际上正在从事框架开发,这意味着需要一种非常强大的编码方法. 我面临着一个问题,我不知道哪个系统.外面派生的类我需要投掷.基本上,情况是当我有一个具有可以由构造函数初始初始化的字段的类和使用这些字段的方法进行初始初始化的字段时.如果用户未初始化这些字段,我必须投掷哪个例外? (这意味着它们为空) 这是一个示例: public class MyConnection { private Uri endpointUri; public Uri EndpointUri { get { return this.endpointUri; } set { this.endpointUri = value; } } public MyConnection() { } pu
0 2024-04-17
编程技术问答社区
一个DateTime可以是空的吗?
可能的重复: dateTime" null"值 是否可以将DateTime对象设置为null? 解决方案 DateTime是 value类型 ,就像int和double一样,没有有意义的null值. 在vb.net中,您可以写下: Dim d As DateTime = Nothing ,但这确实是将d设置为默认值 DateTime值.在C#中,等效的代码将是: DateTime d = default(DateTime); ...等效于DateTime.MinValue. 也就是说,有 Nullable 用于为任何值类型T提供null值. C#中的DateTime?的速记为DateTime?. 其他解决方案 DateTime? myDate = null; 问号将为您提供无效的类型.可以将其设置为本地值或为空的一个. DateTime本身是一个值类型.它不能为空. 其他解决方案 不,您不能为DateTime
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
编程技术问答社区
将空值转换为一个类型
如果我们将一些空变量施加到类型中,我希望编译器会抛出一些例外,但事实并非如此.为什么? 我的意思是 string sample1 = null as string; string sample2 = (string)null; object t1 = null; TestClass t2 = (TestClass)t1; 也许在第一个中,as操作员处理异常处理.但是其他例子必须引发例外.编译器如何处理这些情况?也许由于变量为null,因此不会执行铸造操作?因为它确实施加了无效指针,那一定是错误. 在到文档(明确的转换)您可以从基本类型施放到派生类型. 因为null是所有参考类型的有效值,只要存在铸造路线,就应该可以. object null→TestClass null以object的作用是所有参考类型的超类. 但是,如果您尝试string null→TestClass null(假设TestClass不是string>的子类型),则您会发现汇编
0 2024-04-17
编程技术问答社区
空字符串的ToString
为什么第二个会产生例外,而第一个则没有? string s = null; MessageBox.Show(s); MessageBox.Show(s.ToString()); 更新 - 我能理解的例外,对我来说令人困惑的位是第一部分没有例外的原因.这与消息框无关,如下所示. eg: string s = null, msg; msg = "Message is " + s; //no error msg = "Message is " + s.ToString(); //error 第一部分似乎是隐式将null转换为空白字符串. 解决方案 因为您无法在null上调用实例方法ToString(). 和MessageBox.Show()可能已实现以忽略null并打印出空的消息框. 其他解决方案 因为这个问题在Google上排名很高,以搜索" C#toString null",我想补充一点,Convert.ToString(null)方法将返回
0 2024-04-17
编程技术问答社区
在if语句中检查几个字符串是否为空
如果语句有更好的(更好)编写此方法? if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...} 解决方案 也许使用 null-coalescing operator(??)/p> if((string1 ?? string2 ?? string3 ?? string4 ?? string5 ?? string6) == null){ ;} 如果所有字符串都在集合中,则可以使用linq: bool allNull = strings.All(s => s == null); 其他解决方案 您可以将所有字符串放在列表中并使用 if(listOfStrings.All(s=>s==null)) 至少您可以将其放在多行上 if(string1 == null &&
0 2024-04-17
编程技术问答社区
在C#中,对空字符串的追加是如何进行的?
我很惊讶地看到一个字符串初始化为null,然后在生产环境中附加了一些东西的示例.它只是闻到错误. 我确定它会抛出一个无效的对象例外,但是这个大大减少的例子也有效: string sample = null; sample += "test"; // sample equals "test" *请注意,我发现的原始代码将字符串属性设置为null并将其附加到其他地方,因此涉及编译器在编译时优化null的答案是无关紧要的. 有人可以解释为什么这无错误吗? 随访: 基于Leppie的答案,我使用Reflector来查看string.concat中的内容.现在真的很明显,为什么发生转换(根本没有魔术): public static string Concat(string str0, string str1) { if (IsNullOrEmpty(str0)) { if (IsNullOrEmpty(str1))
0 2024-04-17
编程技术问答社区
C#中的空参数检查
在C#中,是否有充分的理由(除了更好的错误消息)将参数null检查添加到无效值的每个函数中添加参数null检查?显然,使用S的代码无论如何都会引发异常.这样的检查使代码越来越难以维护. void f(SomeType s) { if (s == null) { throw new ArgumentNullException("s cannot be null."); } // Use s } 解决方案 是的,有充分的理由: 它准确地识别了什么是空的,从NullReferenceException 中可能并不明显 它使代码在无效输入中失败,即使某些其他条件意味着该值未重新推荐 它使例外发生 该方法可能在第一次解除之前可能会达到任何其他副作用 这意味着您可以确信,如果将参数传递到其他方面,则不会违反他们的合同 它记录了您的方法的要求(使用代码合同当然对此更好) 现在您的异议: 它较慢:您是否发现它是实际上是代码中的瓶颈,还是您猜
0 2024-04-17
编程技术问答社区
null + true怎么会是一个字符串?
因为true不是字符串类型,null + true字符串是如何的? string s = true; //Cannot implicitly convert type 'bool' to 'string' bool b = null + true; //Cannot implicitly convert type 'string' to 'bool' 背后的原因是什么? 解决方案 看起来很奇怪,它只是遵循C#语言规范的规则. 第7.3.4节: 表单X OP Y的操作,其中OP是一个可超载的二进制操作员,X是X型的表达式,而Y是Y型的表达式,如下所示: 确定了X和Y为操作运营商OP(X,Y)提供的候选用户定义的运算符.该集合由X提供的候选运营商的结合以及Y提供的候选运营商,每个经营者使用第7.3.5节规则确定.如果x和y是相同的类型,或者x和y是从公共基本类型派生的,则共享候选操作员仅在一次组合集中出现. 如果一组候选用户定义的运算符不为空,则
0 2024-04-17
编程技术问答社区
当一个BackgroundWorker在其外部进行同样的操作时,返回空值而不出现Exception错误。
我有几个背景工作者在 tabpage 中都执行相同的任务:他们从mysql数据库中摘取数据,并且完成后,他们更新了 bindingsource 图表的强> . 他们最近开始采取行动.这是代码: private void bgwRefreshChartMoisCourant_DoWork(object sender, DoWorkEventArgs e) { trimlineSalesReportDataSet.viewventesparutilisateurmoiscourantDataTable dT = new trimlineSalesReportDataSet.viewventesparutilisateurmoiscourantDataTable(); this.viewventesparutilisateurmoiscourantTableAdapter.Fill(dT); e.Result = dT; } private
0 2024-04-17
编程技术问答社区
C# DataView RowFilter,DateTime列的空值
我试图在空列上过滤(我只想在列为null的位置),但是问题是我无法将列与零件进行比较,因为该列是DateTime值的. 我得到以下错误 system.data.evaluateexception:不能 执行'='操作 system.datetime和system.String. 这是我的过滤器代码 CourseID IN (" + courseIds + ") AND Isnull(DateBooked, 'Null Column') = 'Null Column' datebooked是带有DateTime值的列. ISNULL正常运行之前的所有内容. 请帮助! 解决方案 isnull总是返回与第一个参数相同类型的值? 尝试DateBooked IS NULL而不是Isnull(DateBooked, 'Null Column') = 'Null Column'.
0 2024-04-17
编程技术问答社区
C# Windows Store应用程序为UsbDevice返回空值
是Windows Store应用程序开发的新手,我正在开发一个必须连接到多个USB设备的应用程序.我正在使用C#使用VS 2013(社区). 例如,使用: 获得附件摄像头的列表 var devices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); 这确实给了我附带的网络摄像头列表. 要访问第一个设备,应使用以下方式创建一个USBDEVICE对象 DeviceInformation device = devices[0]; UsbDevice usbDevice = await UsbDevice.FromIdAsync(device.Id); 但是,对象USBDEVICE始终为空... 我已经使用了多个设备(不同的网络摄像头,慕斯,闪存驱动器等...) 尝试了一下. 有关如何解决此问题或是否有此方法的替代方案的任何建议? 解决方案 您提到的设备都是众所周知的设备类型,这
0 2024-04-17
编程技术问答社区
系统.NullReferenceException 当检查是否!=null时
我正在使用ASHX处理程序,我希望处理程序检查session!= null. if (context.Session["Username"] != null) 我得到了指向这一行的错误: system.nullReferenceException:对象引用未设置为对象的实例. 有什么问题? 解决方案 if (context.Session["Username"] != null) 您的处理程序实施来自 msdn msdn > 指定目标HTTP处理程序 需要读写访问 会话状态值.这是一个标记 接口,没有方法. 其他解决方案 这样使用.封装的对象之一可能已经为null: if (context != null) if (context.Session != null) if (context.Session["Username"] != null) { // Do stuff } 其他解决方案 是的
0 2024-04-16
编程技术问答社区
如何检查许多参数是否为空或空字符串?
我有以下方法,我需要检查参数是空还是空的. public DB Where(string field, string operat, string value, string andOr, string field2, string operat2, string value2) { _Where = " WHERE " + field + " " + operat + " @" + field + "1 " + andOr + " " + field2 + " " + operat2 + " @" + field2 + "2 "; _Params.Add(field + "1", value); _Params.Add(field2 + "2", value2); return this; } 我找到了String.isnullorwhitespace方法,但是这需要以下很多代码:
0 2024-04-16
编程技术问答社区
检查是否为空值对性能的影响
谁能告诉我检查对象的对象或属性是否在c#中为null是什么?我正在处理一个ASP.NET MVC应用程序,该应用程序正在模型中进行零检查,然后在视图中再次完成.我觉得这太过分了,但是如果没有真正的表现打击,那么我不会看到这样做的伤害. 解决方案 我认为,如果您在渲染时只做一次,并且在初始化模型时一次就可以测量. ,如果它在计算密集型循环中,它将产生影响. 诸如查询数据库,读/写入文件等之类的东西是您应注意的. 其他解决方案 几乎微不足道.做这两次不是问题.这样做可能仍然不是问题(但会指示其他一些编程问题) 其他解决方案 当然有一些性能命中,检查是否有一些指示... 如果您想最大程度地减少性能命中率,请使用ILDASM工具查看所使用的方法的CIL代码并检查正在发生的实际执行路径.我什至要说:确保您使用的是object.ReferenceEquals(与实例的等价方法或等价运算符相反).
0 2024-04-16
编程技术问答社区
在c# .net中对服务结果进行适当的空检查
有我的问题是为什么这是到底是,如果我从通话中得到服务,我应该运行"是对象"检查而不是"!= null"? 从我的理解以及我在Microsoft文档中看到的内容我找不到"是对象",因为非null检查示例Microsoft文档中的任何位置,这就是为什么这是否确实是正确进行null检查的方法. 解决方案 Jared Parsons是正确的(显然),这不是意见问题.有具体的优势.可以使用is object或is null.现在看起来很不寻常,但是将来会变得越来越普遍. 直到C#7,is仅用于类型检查.从C#7开始,它也用于模式匹配. is null是一个恒定模式,当输入完全null时匹配. is object或is string s匹配类型. is null和is object是可取的,因为有人可以超载Equals和x==null运算符.例如,两个具有相等尺寸的盒子可以被认为是相等的. x==null使用该类型的平等运算符,只有在操作员说是正确的情况下才会返回true.
0 2024-04-16
编程技术问答社区
检查Console.ReadLine()!=null
我正在为我的应用程序制作一个CMD,并且在检查``console.Readline!= null`` ''console时遇到了麻烦 string input = Console.ReadLine(); if(input != null) SomeFunction(input); 在SomeFunction()中,我拆分了此字符串,例如: Console.WriteLine(input[0]); 问题在于,当用户击中 Enter 一次时,它起作用.但是,如果用户再次触摸它,我会得到一个例外. [0]不存在. 解决方案 当您击中ENTER时,Console.ReadLine返回空string.它不会返回 null .使用string.IsNullOrEmpty改为检查. if(!string.IsNullOrEmpty(input)) 根据文档仅在按CTRL + Z. 时才会返回null 其他解决方案 谢谢每个人! 我认为我
0 2024-04-15
编程技术问答社区