c# - 我应该如何解决 WinRT JS 说 null 是 "null"?

标签 c# javascript null windows-runtime projection

因此,我最近遇到了 Javascript 和 WinRT 问题。基本上,我正在开发一个 WinRT API,因此它应该可以很好地与 Javascript、C++ 和 C# 配合使用。如果传入的值为 null,我在 API 中有一个属性可以执行特殊操作。所以,例如:

public string Foo
{
  get
  {
    return foobar.ToString();
  }
  set
  {
    if(string.IsNullOrEmpty(value))
    {
      foobar=SomeSpecialValue;
      return;
    }
    ParseIntoFoobar(value);
  }
}

这对我来说似乎是一个非常好的属性。但是,当您从 Javascript 使用类似这样的东西时:

myFoobar.foo=null;

结果是 ParseIntoFoobar 抛出的解析异常 为什么?因为在 Javascript 中 null 的值显然是 "null",如 a string containing the word null`

根据我看到的文档,对于 C#,这应该导致转换为 null,或者应该导致空字符串,而不是这个愚蠢的结果。事实上,你可以做出一些对我来说毫无意义的非常不直观的行为。投影:

public string Biz{get;set;}

Javascript:

myObject.biz=null;
log(myObject.biz==null); //results in false

解决此“功能”的最佳方法是什么?对于我想检测 null 但 "null" 作为字符串并非完全无效的事情,我应该怎么做? (想想用户名或类似的)

最佳答案

您可以只使用将被普遍接受的空字符串 ""(string.Empty)。

我对为什么 null Not Acceptable “猜测”可能是因为某些类型映射技巧正在使一切兼容。 C++ 可能会做一些奇怪的事情,比如将 null 引用转换为 '\0'(空字符),这将是一个空字符串。

关于c# - 我应该如何解决 WinRT JS 说 null 是 "null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467365/

相关文章:

c# - 属性或索引器不能分配给 "--"它是只读的

C# 日语形态分析器

c# - 每次我在 Debug模式下将鼠标悬停在变量上时,MS Visual Studio Express 2012 桌面都会崩溃

c# - 自定义控件不显示

javascript - 成功更新数据后再次进行ajax POST调用

java - Findbugs - 在读取输入流中处理空检查和编码

javascript - 迭代构造函数链

javascript - 存储函数调用结果以供以后引用

mysql - 在选择时用另一个表覆盖/加入 MySQL 表

null - 从 ansible 中的 stdout 中删除空值