如果没有返回类型,则无法声明方法

时间:2014-03-21 16:15:11

标签: c# web-services salesforce-service-cloud

我的应用程序中有两个方法,它们都返回来自不同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;
        }
    }

我缺少什么,是否有我应该添加的特殊声明?

6 个答案:

答案 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以执行{}内的代码方法。