小编use*_*358的帖子

VS 2017中的元组语法

在VS2017 RC中,当您尝试使用新的元组语法时,您收到以下错误:

CS8179未定义或导入预定义类型'System.ValueTuple`X'

为了使用元组语法,您必须手动将ValueTuple nuget包导入到项目中.没什么大不了的,因为它是预发布版本,我认为它将在RTM中更改,因此它将默认启用.不幸的是,在最终版本中仍然如此,您必须为每个项目下载nuget包以使用元组语法.

有没有办法默认为每个项目启用元组语法?

.net c# tuples c#-7.0

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

异常函数指针参数语法

这两种语法有什么区别吗?

void fun( void (*funptr)() )
{
    funptr(); // calls the function
}

void fun( void funptr() )
{
    funptr(); // calls the function
}
Run Code Online (Sandbox Code Playgroud)

我一直在使用第一种形式,但我刚看到第二种形式,它似乎表现完全相同,而语法更清晰.

c syntax function-pointers

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

空inizializer_list上的赋值运算符

你能解释一下STL容器如何使用空的初始化列表处理赋值运算符?

当我做这样的事情:

vector<int> v;
v = { };
Run Code Online (Sandbox Code Playgroud)

被调用的函数不是:

vector& operator= (initializer_list<value_type> il);
Run Code Online (Sandbox Code Playgroud)

但:

vector& operator= (vector&& x);
Run Code Online (Sandbox Code Playgroud)

另一方面,当我和我自己的班级做类似的事情时:

struct A {
    A& operator= (const A&) { return *this; }
    A& operator= (A&&) { return *this; }
    A& operator= (initializer_list<int>) { return *this; }
};

/* ... */

A a;
a = { };
Run Code Online (Sandbox Code Playgroud)

代码不能在VS2013上编译,并说:

error C2593: 'operator =' is ambiguous
Run Code Online (Sandbox Code Playgroud)

如果列表不为空,它工作正常,它只是用初始化列表调用函数.只有当列表为空时才会出现问题,在向量上调用rvalue赋值运算符,在我的类上它会给出错误.

如何在向量和其他容器中处理这种情况?

c++ initializer-list overload-resolution compiler-bug visual-studio-2013

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

AzureADDefaults 已过时

我有以下用于 Azure AD 身份验证的代码:

services
    .AddAuthorization(options =>
    {
        options.AddPolicy(name, builder =>
        {
            builder
                .AddAuthenticationSchemes(AzureADDefaults.AuthenticationScheme)
                .RequireAuthenticatedUser();
        });
    })
    .AddAuthentication(AzureADDefaults.AuthenticationScheme)
    .AddAzureAD(options =>
    {
        configuration.Bind("AzureAd", options);
    });

services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

AzureADDefaults.AuthenticationScheme 和 AzureADDefaults.OpenIdScheme 现已过时,并显示消息“请改用 Microsoft.Identity.Web。请参阅https://aka.ms/ms-identity-web”。。但是我找不到任何明确的文档如何升级以下代码以使用 Identity.Web 而不是那些过时的常量。

有人知道如何删除这个过时的代码吗?

authentication obsolete azure-active-directory

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