Jef*_*ood 86

哦......你想要"不是"关键字?

VB添加不是关键字

(Newswire 8-19-2004)

微软已宣布Visual Basic将在该语言中添加"Is not"关键字.根据VB.NET团队的一位消息来源"使用VB,我们希望语言以您的思维方式运行.广泛的可用性研究向我们展示了添加不是语言的好处."

添加关键字将允许这样的语法

If ThisThing Ain't Nothing Then

根据消息来源"我们正在努力跟上英语的进步,正如你所知,这种进步几乎和技术本身一样快." VB团队认为,最终不会成为英语中完全支持的关键词,并且他们认为如果他们在此版本中不包含关键词,他们可能会在下次更新机会之前远远落后于英语VB.然而,激烈辩论的是"不是"应该等同于什么.在它最流行的形式中,上面的代码行将转换为:

If ThisThing Is Nothing Then

然而,每个人的二年级英语老师已经明确表示"不是没有"实际上意味着"是某事",因为这是一个双重否定.意味着正确的平等

If ThisThing IsNot Nothing Then

微软并不急于匆忙做出这一决定,国家消息人士称,"看看,在VB.NET Beta 1和Beta 2之间,我们不得不改变'真'的定义.我们不想再重复这个问题了."

然而,语言纯粹主义者宣称整个方法都是错误的,并指出"不是"是对"不是"的收缩,并且说"如果这不是什么都没有"只是语法不好.他们说,更好的替代方案将包括恢复,不如"如果这不是什么都没有".但即便如此,语言学家Jacque Leblanc也可能不够,"我坚持认为双重否定的永久性是这个问题的根本原因,但到目前为止,没有人真的愿意讨论房间里明显的大象.真正的解决方案是允许'If ThisItem Is Something Then.'"

据报道,微软还在试验"AsIf","Maybe"和"Totally".此外,"Catch"可能会被"Doh!"取代,"Finally"将被"Whatever"取代.

来源:http://web.archive.org/web/20050308014055/http : //ea.3leaf.com/2004/08/vb_adds_aint_ke.html

  • ROFLMAO,部分是因为它太荒谬了,部分是因为有一点声音告诉我他们可能会这样做!"Wordup"是新的"Hello World". (10认同)
  • 小心杰夫,这很危险接近有趣:) (5认同)
  • 就像"VBA不是真正的编程语言"xD一样 (3认同)
  • VB =白话基础。=)它使我想起了一些东西:http://en.wikipedia.org/wiki/Shakespeare_(programming_language) (2认同)
  • 令人惊讶的是,有多少人*仍然*相信这是真的 (2认同)

Dav*_*jak 56

虽然没有内置语法来执行此操作,但我建议您查看支持的逻辑运算符列表,然后仔细研究De Morgan的定律.在这两个字段中有足够的知识将允许您在if-else if语法中编写任何逻辑语句.

编辑:要完全回答你的问题(尽管已经在其他答案中已经完成),你可以编写一个既不是这样的语句:

if (!A && !B) { DoStuff(); }
Run Code Online (Sandbox Code Playgroud)

  • 德摩根定律为+1,每个程序员都应该知道. (19认同)
  • 只是想补充一点,您可以将该运算符更改为`if(!(A || B)){DoStuff(); }`它将完全相同. (8认同)
  • 确切地说,你不需要超过(`&&`,`~`)OR(`||`,`~`)来表示任何逻辑连接. (3认同)

Chr*_*isW 13

编码"如果既不是A也不是B":

if (!A && !B) { ... } //if (not A) and (not B)
Run Code Online (Sandbox Code Playgroud)

要么:

if (!(A || B)) { ... } //if not (A or B)
Run Code Online (Sandbox Code Playgroud)

  • 另一个答案是AKA De Morgan的法律. (6认同)

Unc*_*ens 10

干得好:

class neither_t
{
    bool lhv;
    neither_t(bool lhv): lhv(lhv) {}
public:
    bool nor(bool rhv) const
    {
        return !lhv && !rhv;
    }
    friend neither_t neither(bool lhv);
};

neither_t neither(bool lhv)
{
    return neither_t(lhv);
}

#include <cstdio>

int main()
{
    int x = 3;
    if (neither(x == 1).nor(x == 2)) {
        puts("OK");
    }
}
Run Code Online (Sandbox Code Playgroud)