相关疑难解决方法(0)

你在C#或.NET中看到的最奇怪的角落是什么?

我收集了一些角落案例和脑筋急转弯,并且总是希望听到更多.该页面仅涵盖C#语言位和bobs,但我也发现核心.NET的东西也很有趣.例如,这是一个不在页面上,但我觉得不可思议的:

string x = new string(new char[0]);
string y = new string(new char[0]);
Console.WriteLine(object.ReferenceEquals(x, y));
Run Code Online (Sandbox Code Playgroud)

我希望打印False - 毕竟,"new"(带引用类型)总是会创建一个新对象,不是吗?C#和CLI的规范都表明它应该.好吧,不是在这种特殊情况下.它打印True,并在我测试过的每个版本的框架上完成.(我没有在Mono上尝试过,诚然......)

需要明确的是,这只是我正在寻找的那种事情的一个例子 - 我并不是特别想要讨论这种奇怪的事情.(它与正常的字符串实习不同;特别是,当调用构造函数时,通常不会发生字符串实习.)我真的要求类似的奇怪行为.

还有其他宝石潜伏在那里吗?

.net c#

322
推荐指数
27
解决办法
12万
查看次数

是否有一个VB.NET表达式**总是*产生null?

我们都知道VB Nothing与C#相似,但不相同null.(如果您不知道,请先查看此答案.)

出于好奇,我想知道以下内容:

是否有一个总能产生的VB.NET表达式null


举一个具体的例子,采取以下声明:

Dim o As Object = If(myBool, 5, ...)
Run Code Online (Sandbox Code Playgroud)

是否有可能更换...的东西,这样o5myBool是真实的,Nothing/nullmyBool是假的?

显而易见的解决方案无效:

  • Nothing (参见上面链接答案的问题),
  • DirectCast(Nothing, Object) (使用Option Strict On抛出编译时错误),
  • DirectCast(Nothing, Integer?)适用于此示例,但一般不起作用(如果在此示例中替换5,则5.0需要修改转换).

明显的解决方法(不算作答案):

  • 声明Object变量或字段,将其设置为Nothing并使用它...,
  • 定义始终返回的方法或属性Nothing,
  • DirectCast第二个参数(5)到Object.

注意:上面的例子只是一个例子.问题本身是用粗体写的.

.net c# vb.net

12
推荐指数
2
解决办法
849
查看次数

Nothing等于Default吗?

当我在VB.NET中将变量设置为空时会发生什么?没有什么是默认的,或者我在这里遗漏了什么,这是真的吗?

vb.net

4
推荐指数
1
解决办法
2153
查看次数

标签 统计

.net ×2

c# ×2

vb.net ×2