我的应用程序中有两个方法,它们都返回来自不同Web服务的类似对象。
第一个编译好了,但第二个我刚刚添加不会编译,给我一个错误信息&#39;方法必须返回一个值&#39; < / p>
这是我的代码:
public SforceService() {
this.Url = global::email2case_winForm.Properties.Settings.Default.email2case_sforce_SforceService;
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
public SforceServiceSandbox()
{
//
//
this.Url = global::email2case_winForm.Properties.Settings.Default.SForceService;
if ((this.IsLocalFileSystemWebService(this.Url) == true))
{
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else
{
this.useDefaultCredentialsSetExplicitly = true;
}
}
我缺少什么,是否有我应该添加的特殊声明?
答案 0 :(得分:2)
两种&#34;方法&#34;似乎是构造函数。构造函数必须与封闭类型具有相同的名称。如果你有多个构造函数,它们必须有不同的参数列表(&#34;重载&#34;)。
此处,您发布的两种方法中只有一种可以是构造函数,并且它必须与该类型具有相同的名称。另一个名称不同的方法是常规方法,必须具有返回类型。如果方法没有返回值,则其返回类型为void
。
public class MyType()
{
public MyType() { } // constructor 1
public MyType(int x) { } // constructor 2
public void Foo() { } // regular method
public int Bar() { return 42; } // regular method 2
}
答案 1 :(得分:2)
public SforceService()
{
}
此语法适用于在创建类时调用的构造函数。名称必须与班级名称相同。
如果您想要一个没有返回类型的方法,请使用void
public void SforceServiceSandbox()
{
}
看起来你想要一个类来处理2个场景。在这种情况下,您有两个选项,
两个班级
public class SforceService
{
public SforceService() {
this.Url = global::email2case_winForm.Properties.Settings.Default.email2case_sforce_SforceService;
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
}
public class SforceServiceSandbox
{
public SforceServiceSandbox()
{
this.Url = global::email2case_winForm.Properties.Settings.Default.SForceService;
if ((this.IsLocalFileSystemWebService(this.Url) == true))
{
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else
{
this.useDefaultCredentialsSetExplicitly = true;
}
}
}
或者您传入网址的一个类
public class SforceService
{
private SforceService() { }
public SforceService(TypeOfUrl url)
{
this.Url = url;
if ((this.IsLocalFileSystemWebService(this.Url) == true))
{
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else
{
this.useDefaultCredentialsSetExplicitly = true;
}
}
}
答案 2 :(得分:1)
如果没有返回值,则需要将void修饰符添加到方法中。没有修饰符的方法是构造函数并且是正确的。因此,请将void添加到不属于您的类名的任何内容中。
答案 3 :(得分:1)
如果您不想从方法返回值,请将其声明为void
public void Something() { }
构造函数的形式为:
public ClassName() { }
并且必须与声明它的类名相同。
要从方法返回值,请声明类型:
public string GetAString() { return ""; }
答案 4 :(得分:1)
在C#中,不返回值的方法应声明为“void”,例如
public void Foo()
{
}
答案 5 :(得分:0)
如果要在名称之前返回要返回的对象类型之前的值,则在方法中错过关键字void
以执行{}
内的代码方法。