Новое выражение требует () или [] после ошибки компиляции типа - C#

select phoID,
       case when ptype_id = 1 then pho_PhoneNum else NULL end as Home,
       case when ptype_id = 2 then pho_PhoneNum else NULL end as Work,
       case when ptype_id = 3 then pho_PhoneNum else NULL end as Cell
from phone
5
задан Michael Kniskern 30 March 2009 в 22:09
поделиться

7 ответов

Вот то, что, кажется, единственное подобное, но не точно то же, ошибка, доступная в По сравнению с 2008:

Ошибка компилятора CS1526: новое выражение требует (), [], или {} после типа

Отметьте их {} в сообщении об ошибке, которые являются частью синтаксиса c# 3.0. Это не связано с версией платформы, но с версией языка.

Моя ставка - то, что так или иначе другая версия компилятора использовалась.

Добавленный: это похоже на вероятную проблему с ASP.NET. Место к проверке находится в .config файле (файлах), элементе

configuration\system.codedom\compilers\compiler @language="c#..."

должен быть

<providerOption name="CompilerVersion" value="v3.5"/>
7
ответ дан 18 December 2019 в 08:32
поделиться

Это дает мне, плохо компилируют сообщение в моем ПК

Попробуйте это

x.Add(new MyClass()
{
    Property1 = "MyValue",
    Property2 = "Another Value"
});

Заметьте, после создания класса MyClass существует другая скобка.

4
ответ дан 18 December 2019 в 08:32
поделиться

Его проект предназначается для.NET 3.5? В противном случае та ошибка была бы брошена на x. Добавьте (новая строка MyClass, потому что новый класс не имеет конструктора или индексатора указанными.

3
ответ дан 18 December 2019 в 08:32
поделиться

Вы уверены, что используете тот же самый код?

Код, который Вы предоставили, не компилирует, потому что он испытывает недостаток в объявлении MyClass. Предоставьте нас полную compiland, не только фрагмент кода. Затем отправьте тот файл своему другу, чтобы удостовериться, что Вы все еще видите другое поведение на своей машине.

Сообщение об ошибке указывает на строку и столбец, правильно? Скажите нам где.

2
ответ дан 18 December 2019 в 08:32
поделиться

Вы оба на том же уровне пакета обновления.NET? Я был укушен сегодня, потому что одной машиной была.NET, 3.5 RTM, другой была.NET 3,5 SP1. В.NET 3,5 SP1 (который также устанавливает.NET 2,0 SP2), они представили новую перегрузку Системе. Сеть. Кэширование. Кэш. Вставьте метод, который я использовал на своем dev поле и thenfailed на промежуточной предварительной среде сборки:

public void Insert(
    string key,
    Object value,
    CacheDependency dependencies,
    DateTime absoluteExpiration,
    TimeSpan slidingExpiration,
    CacheItemUpdateCallback onUpdateCallback
)

Взял меня несколько минут к тренировке, почему это было повреждено на одной машине, но не другом...

Обновление: сообщение об ошибке 'Новое выражение требует () или [] после типа' часто средства, Вы скучали по конструктору parens. Вы уверенный, что Вы не отсутствовали () прочь строки:

List<MyClass> x = new List<MyClass>();

Или где-нибудь поблизости?

Обновите Снова: Я создал следующее:

using System;
using System.Collections.Generic;

namespace Test
{
    public class MyClass
    {
        public MyClass() { }

        public string Property1 { get; set; }
        public string Property2 { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<MyClass> x = new List<MyClass>();
            x.Add(new MyClass
            {
                Property1 = "Kev",
                Property2 = "Kev 2"
            });
        }
    }
}

VS2008 SP1, Предназначающийся 3.5 - Компиляции хорошо
VS2008 SP1, Предназначающийся 3.0 - Компиляции хорошо
VS2008 SP1, Предназначающийся 2.0 - Компиляции хорошо

VS2008 RTM - Предназначение 3.5 - Компиляции хорошо
VS2008 RTM - Предназначение 3.0 - Компиляции хорошо
VS2008 RTM - Предназначение 2.0 - Компиляции хорошо

VS2005 - 8.0.50727.867 (на машине с VS2008/3.5 SP1) - Сбои с:

Новое выражение требует () или [] после типа 'Тест. MyClass. Property1.get' должен объявить тело, потому что он не отмечен краткий обзор или экстерн
'Тест. MyClass. Property1.set' должен объявить тело, потому что он не отмечен краткий обзор или экстерн
'Тест. MyClass. Property2.get' должен объявить тело, потому что он не отмечен краткий обзор или экстерн
'Тест. MyClass. Property2.set' должен объявить тело, потому что он не отмечен краткий обзор или экстерн

VS2005 - 8.0.50727.762 (на машине с VS2008/3.5 RTM) - Сбои с:

Новое выражение требует () или [] после типа 'Тест. MyClass. Property1.get' должен объявить тело, потому что он не отмечен краткий обзор или экстерн
'Тест. MyClass. Property1.set' должен объявить тело, потому что он не отмечен краткий обзор или экстерн
'Тест. MyClass. Property2.get' должен объявить тело, потому что он не отмечен краткий обзор или экстерн
'Тест. MyClass. Property2.set' должен объявить тело, потому что он не отмечен краткий обзор или экстерн

Я склонен думать, что проблема не с кодом, который Вы представляете, если снимок экрана не предоставляется примером ошибки компиляции с помощью вышеупомянутого кода или подобный. Шанс того, чтобы излагать кратко вещи к чему-то простому для устранения отвлекающих маневров?

Удачи
Kev

2
ответ дан 18 December 2019 в 08:32
поделиться

Ваш код работает безупречно на меня. Вы уверены, что проект компилируется в 3,5 платформы? Выберите свойства проекта из Меню проектов, перейдите к вкладке Application и посмотрите на Целевую выпадающую Платформу.

1
ответ дан 18 December 2019 в 08:32
поделиться

Добавьте" ()" после нового MyClass в примере кода или удалите пустого конструктора из MyClass.

0
ответ дан 18 December 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: