Не содержит конструктор который принимает аргументы 1 c

Обновлено: 27.04.2024

в последней строке компилятор говорит мне, что у statuseffect нет конструктора, принимающего 3 аргумента. Насколько я могу судить, он содержит 3 аргумента. Есть ли что-то, что мне здесь не хватает?

в качестве примечания. если у вас, ребята, есть какие-либо комментарии или предложения по моему сценарию, это также будет полезно.

5 ответы

Ваш конструктор private и, следовательно, «невидимый» для кода вне самого класса. Попробуйте добавить ключевое слово internal перед конструктором. Или, если он должен быть виден и из других проектов, добавьте public .

Еще одна проблема: в вашем классе statuseffect , вы объявляете три локальным переменная внутри вашего конструктора. Единственной областью действия этой переменной является конструктор. Вы должны переместить их объявления из конструктора (тогда они становятся экземплярами поля класса). Конструктор по-прежнему может присваивать им значения.

ответ дан 17 авг.

Ваш конструктор должен быть помечен public .

ответ дан 17 авг.

ах да . чувак, я даже не заметил сезам сейчас. Это те маленькие детали, которые получают вас. - печенье

ответ дан 17 авг.


Сделайте свой конструктор общедоступным. Когда вы не указываете какой-либо спецификатор доступа по умолчанию, он становится закрытым, что означает, что его можно использовать только внутри вашего класса. Публичный доступ делает его доступным извне.

Более того, сделайте что-нибудь с этими переменными, они бесполезны.

ответ дан 17 авг.


Не сказал бы, что в остальном все хорошо. Посмотрите на класс здесь. У него есть только конструктор, который объявляет бесполезные локальные переменные. Смотрите новейшую версию моего ответа. - Йеппе Стиг Нильсен

У меня есть два класса, поля и FieldValues: поля следующим образом:

И FieldValues: поля

Эти классы представляют некоторые значения, которые будут извлечены из xls и вставлены в базу данных. В основной программе

При компиляции я получаю следующую ошибку:

Ошибка CS1729 «FieldValues» не содержит конструктор, который принимает 1 аргумент.

Я не очень понимаю, почему именно мой конструктор из FieldValues не работает здесь.

4 ответа

Ваша ошибка говорит вам, что у вас есть конструктор, объявленный как:

И вы пытаетесь вызвать его только с 1 параметром:

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

Одним из решений также может быть перегрузка конструктора тем, где вы можете передать переменную типа Fields в качестве параметра.

Тогда вы все равно можете назначить словарь самостоятельно.

Как я только что узнал. Перегрузка не сработала бы, потому что в вашем посте ваш конструктор не public ! Это важно, чтобы иметь возможность звонить из любого другого класса. Я исправил эту ошибку в своем ответе.

Ваш Ctor of FieldValues принимает два параметра: FieldType newType и s tring newName . Вы вызываете его только с одним параметром: new FieldValues(tableFields[0]) .

Что вы хотите, вероятно, это:

Ваш класс FieldValues имеет следующий (непубличный, кстати) конструктор:

Однако вы называете это так:

Отсюда и ошибка. Вы, вероятно, тоже хотели передать тип, например:

Или добавьте другой конструктор, который подразумевает определенный тип, например:

Или (как указал @JeppeStigNielsen)

Или вы перемещаете параметр типа и делаете его необязательным

Кстати, "penis" не является хорошим текстом-заполнителем во время разработки, вы можете забыть его убрать (игра слов не предназначена). Я позволил себе заменить его "test" в вашем вопросе.

Спасибо большое за вашу поддержку. Я перегружал конструктор вот так

И словарная часть, как это

, Я получаю ошибки, говоря: "'CycleEvent.CharityCyclists "не содержит конструктора, который принимает 0 аргументов", он говорит, что ошибка связана с этой частью кода:

вот мой класс CharityCyclists:

вот ведь CharityCyclists класс не имеет конструктора, который не принимает аргументов.

Если вы хотите разрешить CharityCyclists чтобы быть построенным без параметров, добавьте этот код в класс:

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

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

у вас нет consturctor, который не принимает никаких аргументов.

вы должны добавить

или что-то в этом роде

при создании конструктора, не содержащего 0 аргументов, автоматически удаляется значение по умолчанию конструктор. Вы должны создать новый конструктор по умолчанию (без аргументов) и что будет заботиться о проблеме.

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

у вас нет конструктора для этого класса, который не имеет аргументов. Единственный конструктор у вас принимает параметры. Добавьте это в свой класс:

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

добавить это CharityCyclists класс:

вы не можете закодировать строку:

Если у вас нет этого конструктора.

вы пытаетесь создать экземпляр cyclist1 экземпляр класса CharityCyclists без каких-либо аргументы-для этого требуется конструктор без аргументов.

но определение класса CharityCyclists имеет только один конструктор с 9 аргументами. Поскольку этот конструктор требует 9 аргументов, cyclist1 не будет соответствовать этому конструктору. Вам нужен конструктор, который не принимает аргументов, как в:

Новая часть этого кода Form1() (этот код находится в моем Main.cs) продолжает выдавать мне эту ошибку - HomeInventory2.Form1 не содержит конструктор, который принимает 0 аргументов.

Код Form1 выглядит следующим образом

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

Что он должен делать без каких-либо данных? - Styxxy

Просто добавьте пустой Form1() конструктор, который инициализируется значениями по умолчанию, т. е. тем же кодом, что и существующий, просто придумайте разумные значения по умолчанию. Вы даже можете перенести логику в функцию и вызвать ее из обоих конструкторов. - Ryan

5 ответы

ответ дан 19 окт '12, 23:10


попробуйте добавить конструктор, который не принимает такие аргументы

ответ дан 19 окт '12, 23:10

-1 Я собирался анонимно sockpuppet этот ответ, но потом вы пошли и вызвали метод на null . Я не могу с чистой совестью поддержать это. - Кевин Стрикер

Эй, я продемонстрировал, как смоделировать конструктор, но оставил его, чтобы он увидел, что там есть какая-то проблема. Я не собирался идти и создавать новый IEnumerable и не собирался менять всю свою логику. Кроме того, это методы linq, они предназначены для работы с нулями ;-) - Джейколебранд

Ой, мой плохой :P Конечно, пытаюсь создать новый IEnumerable точно не сработает. - Кевин Стрикер

Посмотрите на конструктор для Form1:

Он запрашивает значение типа IEnumerable который вы должны предоставить при создании формы. Как это

Вы также можете добавить конструктор без параметров.

Призыв к InitializeComponent() используется для заполнения формы всеми элементами управления и обработчиками.

ответ дан 19 окт '12, 23:10


Вы должны изменить свой код для поставщика параметра:

Либо так, либо создайте конструктор без параметров.

ответ дан 19 окт '12, 23:10

Вы должны будете предоставить IEnumerable prepopulated вход:

make new Form1(null) or new From1(new List)

ответ дан 19 окт '12, 23:10

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

Чтобы вернуться к DataContext родительского элемента, этот синтаксис используется:

Вы можете определить свое свойство зависимостей в вашей ViewModel.

И вот моя простая модель:

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

enter image description here

[/g0]

Ошибка говорит вам, что конструктор Malicious не может найти подходящий конструктор для цепочки в своем базовом классе ( MaliciousSmall ).

Первоначальная проблема заключается в том, что ваш конструктор производного класса неявно содержит этот конструктор:

Или даже когда вы добавили явный конструктор, он все еще пытается объединиться в цепочку без параметров:

. но в нет такого беспараметрического конструктора в базовом классе ( MaliciousSmall ), следовательно, ошибка.

Я думаю, что вы хотите связать конструктор со строкой (та, которую вы объявили в MaliciousSmall ):

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

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

См. мою статью о построении цепочек для более подробной информации.

Ваш класс Malicious вообще не определил никакого конструктора, и из документов MSDN по использованию конструкторов

Это означает, что ваш класс имеет:

В производном классе, если базовый Конструктор класса не вызывается явно с помощью ключевого слова base , конструктор по умолчанию, если он есть, называется неявно .

Это фактически означает:

Так как ваш базовый класс не имеет конструктора по умолчанию (без параметра) , вы получите ошибку.

  1. Определите конструктор по умолчанию в вашем базовом классе.
  2. Явно вызовите базовый конструктор из вашего производного класса.

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

Я попытался создать пустой конструктор, который будет принимать объект DataRow в качестве параметра

Я думаю, что вы неправильно запутали термин пустой . Пустой конструктор не принимает параметры по определению. У вас не может быть пустого конструктора с параметрами.

Если вы также хотите сохранить параметр в конструкторе производного класса, вам нужно использовать ключевое слово base , чтобы указать базовый конструктор.

Если вы не хотите добавлять конструктор без параметров, передайте row в конструктор класса base :

Если вы производите какой-либо класс из базового класса, то вам следует либо добавить конструктор без параметров в базовый класс, либо указать конструктор базового класса, который будет вызываться в производном классе. Итак, чтобы решить вашу проблему: Решение 1: Добавьте конструктор без параметров в базовый класс, т.е. в MaliciousSmall as,

Решение 2: Укажите конструктор базового класса в конструкторе производного класса как,

Надеюсь, это поможет вам!

Если в классе не определены конструкторы, компилятор предоставляет конструктор по умолчанию / без параметров, который используется для создания экземпляров соответствующих объектов, как показано ниже.

Поскольку вы определили конструктор в базовом классе, компилятор предполагает, что вам не требуется конструктор по умолчанию / без параметров. Когда конструктор по умолчанию из MaliciousSmall пытается вызвать конструктор по умолчанию своего базового класса, разрывается цепочка конструктора.

Для создания экземпляра объекта требуется вызвать конструктор по умолчанию класса Malicious , который, в свою очередь, пытается вызвать конструктор по умолчанию базового класса, но, поскольку этого не существует, разрывается цепочка конструктора .

Рекомендуется использовать необходимые конструкторы так, чтобы это не приводило к разрыву цепочки.

Конструкторы очень важны, так как, я не думаю, что ваша программа никуда не денется без создания объекта, пожалуйста, обязательно посетите MSDN и постарайтесь прочитать о this ключевое слово.

Читайте также: