奇怪的行为,将一个语句(声明+初始化)写在两个不同的行中不再工作

本文关键字:两个 工作 不再 初始化 语句 声明 一个 | 更新日期: 2023-09-27 18:07:01

当像

这样写时,我得到了很多语法错误(缺少冒号…)
 IGlobal[] all;
        public MainWindow()
        {
            InitializeComponent(); 
            all = { new ATM(), new Bank()};
        }

即使这样也不行:

IGlobal[] all;
all= { new ATM(), new Bank()};

但是只要我把它写在一行(例如在一个方法中)它就工作了:

IGlobal[] all= { new ATM(), new Bank()};

" igglobal "只继承自"IDisposable"。"ATM"answers"Bank"继承自" igglobal "和1个自定义抽象类。

这里有什么问题,我该怎么办?

奇怪的行为,将一个语句(声明+初始化)写在两个不同的行中不再工作

这是语法,其中初始化器和new不是完全相同的东西,您不能强迫它按照您想要的方式。你所能做的就是显式地告诉数组类型

    all = new IGlobal[] { new ATM(), new Bank() };

或者这个也可以,但我建议不要使用它,除非你想故意让你的同事感到困惑。

    all = new[] { (IGlobal) new ATM(), new Bank() };