在我看来,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)将导致真正的当从引用转换E到T存在的,但随后笔者通过时明确排除的情况下继续E为null文字或具有null价值.
他们为什么这样做?这对我来说似乎违反直觉.
这两个文档页面似乎与此主题相矛盾:
它是按位平等还是反思?
我瞥了一眼源代码,ValueType发现评论说
//如果此对象中没有GC引用,我们可以避免反射
//并做一个快速的memcmp
有人可以澄清"GC参考"的含义吗?我想这是一个有引用类型的字段,但我不确定.
如果我创建一个struct只有值类型字段,那么它的实例是否总是与快速方式进行比较?
更新: .Net 4.5的文档已得到显着改进:它没有提到的矛盾,现在可以更好地理解默认值类型相等性检查的工作原理.
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"的注释 - 我从来不知道这是可能的.
所以我的问题是:我如何防止阅读介绍?
我还非常感谢编译器决定引入读取的确切解释,因为该文章不包括它.
我正在寻找在整个交易中使用当前日期和时间的一致值的指导原则.
通过事务我松散地表示应用程序服务方法,这种方法通常执行单个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类被登记为"每寿命实例范围" 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) 我想知道是否有人知道一个好方法(最好是内置方法,但我当然愿意自己编写)来从Plotly离线客户端的HTML输出中获取<script>和<div>标记.
我已经熟悉散景并非常喜欢将它用于2D可视化,但我真的很想将Plotly与其3D可视化功能集成在一起.
如果您需要有关该项目的任何其他详细信息,请告诉我们.
c# ×3
.net ×2
clr ×1
datetime ×1
html ×1
plotly ×1
python ×1
time ×1
transactions ×1
web-services ×1