大括号用虚函数初始化结构

问题描述

Brace initialization

let myIds = datatable (name: string) [ "111","222","333"] | summarize make_set(name);
let traces=datatable(message:string) ["aaaaaaaaaaaaaaaa","blah blah 111","blah111 blah","111blah"];
traces
| mv-apply id=toscalar(myIds) to typeof(string) on (where message contains id)

它工作正常。但是如果把foo改成虚函数,就不会编译出错了,

错误 C2440“正在初始化”:无法从“初始化列表”转换为

我发现this

聚合是没有用户提供的数组或类(第 9 条) 构造函数 (12.1),没有私有或受保护的非静态数据成员 (第 11 条),没有基类(第 10 条),也没有虚函数 (10.3)。

但这背后的原因是什么?

解决方法

为什么不使用带有 public static async Task ShowAsync(String keyName) { var msg = LocalizationHelper.GetValue(keyName); if (string.IsNullOrWhiteSpace(msg)) msg = keyName; var messageDialog = new MessageDialog(msg); await messageDialog.ShowAsync(); } 的参数化构造函数

virtual void foo() {}