Tag: null

引用类型的非初始化vs空值

引用类型变量之间是否存在未初始化或具有空值的区别? 我读到某处非初始化意味着null,但在其他地方我读了别的东西。 谢谢!

C#数据库访问:DBNull与null

我们在这里使用自己的ORM,并为所有db表提供强类型包装器。 我们还允许执行弱类型的临时SQL,但这些查询仍然通过相同的类来从数据读取器中获取值。 在调整该类以使用Oracle时,我们遇到了一个有趣的问题。 使用DBNull.Value或null是否更好? 使用DBNull.Value有什么好处吗? 使用null似乎更“正确”,因为我们已经将自己从数据库世界中分离出来,但是有一些含义(例如,当值为null时,你不能盲目地使用ToString() )所以它绝对是我们需要的东西做出有意识的决定。

处理NULL的最佳方法

在我的函数的顶部,我正在尝试最好的方法来处理在C#中进入我的过程的null。 检查和处理null的最佳方法是什么?为什么? 我已经添加了我正在使用的完整代码,Resharper告诉我使用选项#1。 通常我按照它说的做,因为我理解为什么它会使它更有效率。 这次虽然我不确定所以我必须问。 Option #1 if (sender == null) return; // Code goes here or Option #2 if (sender != null) { // Code goes here } Complete Code private void EmployeeMouseHoverToolTip(object sender, EventArgs e) { if (sender != null) { var sUserIdentifier = ((C1TextBox)sender).Text; var userIdentifier = Guid.Empty; if (Utilities.IsGuid(sUserIdentifier)) { userIdentifier […]

C#:在什么情况下你应该删除引用?

CLR Profiler还可以显示哪些方法分配的存储空间超出了您的预期,并且可以发现无意中保留对无用的对象图的引用的情况,否则这些对象图可能被GC回收。 (一个常见的问题设计模式是一个软件缓存或项目的查找表,这些项目不再需要或以后可以安全重建。当缓存使对象图表保持活动超过其使用寿命时,这是悲剧性的。相反,请确保将参考文献归零到你不再需要的对象 。) – 编写更快的托管代码 我认为我之前没有真正搞过一个参考。 我假设你并不总是需要这样做,但我想也有时候记得这么做很重要。 但是,那是什么情况呢? 什么时候应该删除引用?

将generics限制为可以为null的事物

我想限制一个通用的我编码到任何可以为null东西。 那基本上是任何类+ System.Nullable (例如int?等)。 对于课堂部分,它很容易: public class MyGeneric where T : class {} 但是,这不允许我这样做: var myGeneric = new MyGeneric(); 或这个: var myGeneric = new MyGeneric<Nullable>(); 编译器抱怨: 错误CS0452:类型’int?’ 必须是引用类型才能在generics类型或方法’Test.MyGeneric’中将其用作参数’T’ 所以我尝试将addind System.Nullable作为T可接受类型: public class MyGeneric where T : class, System.Nullable {} 但它不会这样做。 编译器返回以下错误: 错误CS0717:’System.Nullable’:静态类不能用作约束 然后我试过了 public class MyGeneric where T : class, INullable {} 它确实编译,但是当我这样做时: var myGeneric […]

使用Min或Max时如何处理LINQ中的空值?

我有以下Linq查询: result.Partials.Where(o => o.IsPositive).Min(o => o.Result) 当result.Partials.Where(o => o.IsPositive)不包含元素时,我得到一个exception。 除了将操作分成两部分并检查null之外,还有一种优雅的方法来处理这个吗? 我有一个像这样的操作的课程。 编辑:这个问题与LINQ to Objects有关。 这是我得到的例外(翻译它说:序列是空的):

如何通过列的名称检查MySqlDataReader中的NULL?

如何在打开的MySqlDataReader检查NULL值? 以下不起作用; 它总是打击else : if (rdr.GetString(“timeOut”) == null) { queryResult.Egresstime = “Logged in”; } else { queryResult.Egresstime = rdr.GetString(“timeOut”); } rdr.IsDbNull(int i)只接受列号,而不是名称。

如何避免多次if null检查

可能重复: Deep Null检查,有更好的方法吗? C#优雅的方法来检查属性的属性是否为null 我必须在深度对象模型中进行查找,如下所示: p.OrganisationalUnit.Parent.Head.CurrentAllocation.Person; 无论如何要评估这个并返回null如果任何链为null(organizationalunit,parent,head等),而不必做 if (p.org == null && p.org.Parent == null && p.org.Parent.Head . . .

扩展空检查的最佳方法是什么?

你这都是这样的: public void Proc(object parameter) { if (parameter == null) throw new ArgumentNullException(“parameter”); // Main code. } Jon Skeet曾经提到他有时会使用扩展来进行检查,所以你可以做到: parameter.ThrowIfNull(“parameter”); 所以我得到了这个扩展的两个实现,我不知道哪个是最好的。 第一: internal static void ThrowIfNull(this T o, string paramName) where T : class { if (o == null) throw new ArgumentNullException(paramName); } 第二: internal static void ThrowIfNull(this object o, string paramName) { if (o […]

检查文本框文本是否为空

我使用以下代码检查空文本框,如果它为null,则跳过副本到剪贴板并转到其余代码。 我不明白为什么我得到一个“值不能为NULL”的例外。 它不应该看到null并继续前进而不复制到剪贴板? private void button_Click(object sender, EventArgs e) { if (textBox_Results.Text != null) Clipboard.SetText(textBox_Results.Text); //rest of the code goes here; }