我对编程比较陌生,而且我刚上课。 问题是,我的编译器正在返回
"错误1' OlioohjelmoinninPerusteet.Blogimerkinta'不包含 带有1个参数的构造函数"
我不知道如何解决这个问题,这是我的代码。
using System;
namespace OlioohjelmoinninPerusteet
{
class Blogimerkinta
{
string teksti;
string[] avainsanat;
public string Teksti { get; set; }
public string[] Avainsanat { get; set; }
}
class Ohjelma
{
static void Main()
{
string otsikko = "Otsikko";
Blogimerkinta merkinta = new Blogimerkinta(otsikko);
merkinta.Teksti = "Teksti";
merkinta.Avainsanat = new string[] { "Eka", "Toka" };
}
}
}
答案 0 :(得分:3)
您正在新建一个对象并传入构造函数的参数:
Blogimerkinta merkinta = new Blogimerkinta(otsikko);
此对象没有带任何参数的构造函数,默认情况下,您可以使用默认构造函数,所有c#对象都不带参数:
Blogimerkinta merkinta = new Blogimerkinta();
或创建一个带字符串参数的构造函数:
public Blogimerkinta(string arg)
{
//use argument for something
}
答案 1 :(得分:3)
你需要为你的类添加一个构造函数:
class Blogimerkinta
{
string teksti;
string[] avainsanat;
public string Teksti { get; set; }
public string[] Avainsanat { get; set; }
public Blogimerkinta(string otsikko)
{
this.teksti = otsikko;
}
}
答案 2 :(得分:3)
By default, if you do not specify a constructor it is the same as below
如果没有为对象提供构造函数,C#将创建 默认情况下,一个实例化对象并设置成员变量 到默认值表中列出的默认值(C# 参考)。
Using Constructors (C# Programming Guide)
不带参数的构造函数称为默认值 构造函数。只要对象是,就会调用默认构造函数 通过使用new运算符进行实例化,并且不提供任何参数 新的。
除非类是静态的,否则给出没有构造函数的类 公共默认构造函数由C#编译器启用,以便启用类 实例
class Blogimerkinta
{
string teksti;
string[] avainsanat;
public string Teksti { get; set; }
public string[] Avainsanat { get; set; }
public Blogimerkinta()
{
}
}
您正在调用未指定的构造函数,即
public Blogimerkinta(string TADA)
{
}
答案 3 :(得分:2)
如果你没有定义一个默认构造函数(你没有),C#会创建一个默认构造函数,默认构造函数没有参数,也没有做任何事情。它等同于:
public Blogimerkinta()
{
}
为了使用一个带参数的构造函数(我假设在对象内部设置了一个属性到该参数的值),你需要定义一个。像这样:
public Blogimerkinta(string teksti)
{
this.Teksti = teksti;
}
(或者设置你想要在内部设置的任何值。目前你的类只有一个string
类型的属性,但是命名使得它不清楚你是否正在尝试设置它。)
答案 4 :(得分:1)
好吧,您正在尝试创建Blogimerkinta
的实例并将字符串参数传递给构造函数。但是,您的类上没有任何带有字符串参数的构造函数。无论是创建构造函数还是使用默认的无参数构造函数来创建实例:
Blogimerkinta merkinta = new Blogimerkinta();
答案 5 :(得分:1)
您的Blogimerkinta没有为其定义构造函数。在编译期间,将生成一个不带参数的默认值。如果您希望您的类在实例化期间接受参数,请创建一个带参数的构造函数。
class Blogimerkinta
{
public Blogimerkinta(string foo){
//do something with foo
}
string teksti;
string[] avainsanat;
public string Teksti { get; set; }
public string[] Avainsanat { get; set; }
}
答案 6 :(得分:1)
这一行用一个参数调用构造函数。
Blogimerkinta merkinta = new Blogimerkinta(otsikko);
要解决此问题,您必须创建一个。
class Blogimerkinta
{
string teksti;
string[] avainsanat;
public Blogimerkinta(){} // This is parameterless constructor
public Blogimerkinta(string input)
{
if(input != null)
teksti = input; //You initialize class fields here or do other stuff
}
public string Teksti { get; set; }
public string[] Avainsanat { get; set; }
}
正如您在Main()中看到的那样,您传递的是string
值,因此构造函数必须使用字符串值,以使用该值初始化其字段/字段(可能更多值)
检查msdn,因为他们解释得非常好。
答案 7 :(得分:1)
一个类有一个或多个构造函数。如果您不提供一个,编译器将创建一个空的: 当你说新的Blogimerkinta()'时会调用构造函数。 你正在调用一个带参数的构造函数:new Blogimerkinta(otsikko) 但是你没有定义构造函数。
您需要定义此构造函数:
public Blogimerkinta(string s) {
teksti = s; //I don't know which field you want to assign, just an example
}
(所以它看起来像一个方法,但是没有返回类型,并且它与类具有相同的名称)
如果您没有定义构造函数,则只能调用' new Blogimerkinta()'
答案 8 :(得分:-1)
以下是一般修复:
class Blogimerkinta
{
string teksti;
string[] avainsanat;
string foo="";
public Blogimerkinta(string bar)
{
foo=bar;
}
public string Teksti { get; set; }
public string[] Avainsanat { get; set; }
}