小编Ste*_*Fan的帖子

120
推荐指数
5
解决办法
4万
查看次数

匿名类实例----这是个坏主意吗?

在ES6中我们可以做匿名类:

var entity = class {
}
Run Code Online (Sandbox Code Playgroud)

但我们也可以实例化它:

var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');
console.log(entity.getName()); // Foo
Run Code Online (Sandbox Code Playgroud)

背后做了什么,它带来了什么好处以及它带来了什么警告?

javascript oop anonymous-function javascript-objects ecmascript-6

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

如果有一个constexpr if语句,为什么不是其他constexpr语句呢?

有没有理由只if constexpr被包含在C++ 17中?

我能做到这一点:

template <int N>
constexpr int fib() {
    if constexpr (N == 1 || N == 2) {
        return 1;
    } else {
        return fib<N - 1>() + fib<N - 2>();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么不考虑C++委员会switch constexpr

template <int N>
constexpr int fib() {
    switch constexpr (N) {
        case 1:
        case 2: return 1;
        default: return fib<N - 1>() + fib<N - 2>();
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来好多了 switch constexpr

甚至是一个过早的编译时循环,使用for constexpr/ while constexpr不使用模板替换/递归模板函数展开: …

c++ c++17

15
推荐指数
2
解决办法
1406
查看次数

模式匹配机制有哪些限制?

就个人而言,我只知道动态不能用于模式匹配,这被认为是一个遗憾:(

dynamic foo = 10;
switch(foo) {
    case int i:
    break;
}
Run Code Online (Sandbox Code Playgroud)

此外,有价值的元组/新元组不能用于模式匹配:

dynamic foo = (420, 360);
switch(foo) {
    case (int, int) i:
    break;
}
Run Code Online (Sandbox Code Playgroud)

它已在当前版本的C#7中删除,并已分配以供将来使用.

我不能做的其他事情是什么?

c# c#-7.0

5
推荐指数
1
解决办法
888
查看次数

AppDomain之间共享静态类吗?

我有四个程序集,ModuleStatic,Loader以及ModuleA和ModuleB,除了可执行程序Loader之外,它们都是DLL。

在DLL ModuleStatic中:

public class ModuleStatic {
    public static string Foo { get; set; } = "Foo";    
}
Run Code Online (Sandbox Code Playgroud)

在Loader中,将通过Assembly.Load和AppDomain将ModuleA和ModuleB分别加载到domA和domB。如果ModuleA修改了ModuleStatic.Foo变量,则domB中的ModuleB会收到修改吗?

c# reflection appdomain

2
推荐指数
1
解决办法
984
查看次数