我应该如何解决 WinRT JS 说空是“空”

本文关键字:JS WinRT 何解决 解决 我应该 | 更新日期: 2023-09-27 17:55:22

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

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"就像在包含单词 null' 的字符串中一样

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

public string Biz{get;set;}

Javascript:

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

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

我应该如何解决 WinRT JS 说空是“空”

你可以只使用空字符串 " (字符串。空),将被普遍接受。

我对为什么 null 不可接受的"猜测"可能是因为发生了某种类型映射技巧,以使所有内容兼容。C++可能会做一些奇怪的事情,例如将空引用转换为"''0"(空字符),然后变成空字符串。