小编Geb*_*ebb的帖子

给定null时,为什么is运算符返回false?

在我看来,is运营商有点不一致.

bool Test()
{
    // Returns false, but should return true.
    return null is string;
}
Run Code Online (Sandbox Code Playgroud)

一个人希望该null值属于任何引用(或可空)类型.事实上,C#语言规范说明了支持这种假设的东西,例如(6.1.6隐式引用转换):

隐式引用转换是:
...
•从null文本到任何引用类型.

说明(7.10.10 is运算符)中的is运营商开始通过说表达(E is T)将导致真正的当从引用转换ET存在的,但随后笔者通过时明确排除的情况下继续Enull文字或具有null价值.

他们为什么这样做?这对我来说似乎违反直觉.

c#

131
推荐指数
6
解决办法
2万
查看次数

在.NET 4.0中,值类型的Equals的默认实现是什么?

这两个文档页面似乎与此主题相矛盾:

它是按位平等还是反思?

我瞥了一眼源代码,ValueType发现评论说

//如果此对象中没有GC引用,我们可以避免反射

//并做一个快速的memcmp

有人可以澄清"GC参考"的含义吗?我想这是一个有引用类型的字段,但我不确定.

如果我创建一个struct只有值类型字段,那么它的实例是否总是与快速方式进行比较?

更新: .Net 4.5的文档已得到显着改进:它没有提到的矛盾,现在可以更好地理解默认值类型相等性检查的工作原理.

.net c# clr

27
推荐指数
1
解决办法
3093
查看次数

阅读C#简介 - 如何防范它?

MSDN杂志中的一篇文章讨论了Read Introduction的概念,并给出了一个可以被它破坏的代码示例.

public class ReadIntro {
  private Object _obj = new Object();
  void PrintObj() {
    Object obj = _obj;
    if (obj != null) {
      Console.WriteLine(obj.ToString()); // May throw a NullReferenceException
    }
  }
  void Uninitialize() {
    _obj = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

注意这个"可能抛出NullReferenceException"的注释 - 我从来不知道这是可能的.

所以我的问题是:我如何防止阅读介绍?

我还非常感谢编译器决定引入读取的确切解释,因为该文章不包括它.

.net c# multithreading

24
推荐指数
2
解决办法
1020
查看次数

在整个交易过程中始终使用"现在"的值

我正在寻找在整个交易中使用当前日期和时间的一致值的指导原则.

通过事务我松散地表示应用程序服务方法,这种方法通常执行单个SQL事务,至少在我的应用程序中.

环境背景

这个问题的答案中描述的一种方法是将当前日期放在环境上下文中,例如DateTimeProvider,并使用它来代替DateTime.UtcNow任何地方.

然而,这种方法的目的只是为了使设计单元可测试,而我还想防止由不必要的多次查询引起的错误DateTime.UtcNow,其中一个例子如下:

// In an entity constructor:
this.CreatedAt = DateTime.UtcNow;
this.ModifiedAt = DateTime.UtcNow;
Run Code Online (Sandbox Code Playgroud)

此代码创建的实体具有稍微不同的创建和修改日期,而人们希望这些属性在创建实体后立即相等.

此外,环境上下文很难在Web应用程序中正确实现,所以我想出了另一种方法:

方法注入+ DeterministicTimeProvider

  • 所述DeterministicTimeProvider类被登记为"每寿命实例范围" AKA依赖性"每HTTP请求在网络应用程序的实例".
  • 它是构造函数注入到应用程序服务并传递给实体的构造函数和方法.
  • 使用该IDateTimeProvider.UtcNow方法代替通常DateTime.UtcNow/ DateTimeOffset.UtcNow到处获取当前日期和时间.

这是实施:

/// <summary>
/// Provides the current date and time.
/// The provided value is fixed when it is requested for the first time.
/// </summary>
public class DeterministicTimeProvider: IDateTimeProvider
{
    private readonly Lazy<DateTimeOffset> _lazyUtcNow =
        new Lazy<DateTimeOffset>(() => DateTimeOffset.UtcNow); …
Run Code Online (Sandbox Code Playgroud)

time datetime web-services transactions

17
推荐指数
2
解决办法
1128
查看次数

使用Python从Plotly获取<script>和<div>标签

我想知道是否有人知道一个好方法(最好是内置方法,但我当然愿意自己编写)来从Plotly离线客户端的HTML输出中获取<script><div>标记.

我已经熟悉散景并非常喜欢将它用于2D可视化,但我真的很想将Plotly与其3D可视化功能集成在一起.

如果您需要有关该项目的任何其他详细信息,请告诉我们.

html python plotly

7
推荐指数
2
解决办法
5340
查看次数

标签 统计

c# ×3

.net ×2

clr ×1

datetime ×1

html ×1

multithreading ×1

plotly ×1

python ×1

time ×1

transactions ×1

web-services ×1