C#从另一个void返回一个字符串


C# return a string from another void

我很确定这很容易。我只想从另一个空白处返回一条线。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void LinkWorker(string baseURLString)
{
     // do some stuff here
     HTMLWork(baseURLStringCycle)
     --> this is where i need xstring returned
     foreach(string xyString in xstring.split('
'
))
     {
     }
}

public static void HTMLWork(string baseURLStringCycle)
{
     //do HTML work here
     // create x string
     string xString = ; //the result of the htmlwork
}


您不希望使用void方法,而是希望使用返回类型string的方法。

1
2
3
4
5
public static string HTMLWork(string baseURLStringCycle)
{
     //...
     return xString;
}


在void方法中无法返回值,因为它是void方法。但有两种方法可以达到相同的结果。

  • 使用两个方法都可以访问的全局变量。然后,在htmlwork方法中设置全局变量,并在linkworker方法中访问相同的变量。
  • 通过引用将变量从LinkWorker传递到HTMLWork。由于变量是通过引用传递的,因此在HTMLWork中所做的更改对LinkWorker是可见的。

  • 不能从void函数返回字符串。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public static void LinkWorker(string baseURLString)
    {

    // do some stuff here
    string xstring=HTMLWork(baseURLStringCycle)
    foreach(string xyString in xstring.split('
    '
    ))
    {
    }

    public static string HTMLWork(string baseURLStringCycle) //use string instead of void
     {
     //do HTML work here
    // create x string

    string xString = ; //the result of the htmlwork
    return xString;
    }

    如果要使用void方法,则应使用out关键字或传入引用。

    例如

    1
    2
    3
    4
    public static void HTMLWork(string baseUrlStringCyle, out XResult)
    {
      string xString ="result";
    }

    安东尼的回答是你最好的选择。

    也可以使用"out"参数指定字符串的值。但如果可以直接从方法返回,则不应使用此方法

    如:

    1
    2
    3
    4
    public static void HTMLWork(string baseURLStringCycle, out returnString)
    {
    returnString  ="returned string";
    }

    为什么不返回一个字符串而不是void?


    您不希望更改函数签名并保留此空值,可以使用字符串作为参数,并在htmlwork函数中更改此值。C传递对象作为参考,这样就完成了技巧。


    最简单但显然不是最好的方法是使Xstring成为global变量。

    除此之外,除非您可以选择更改htmlwork方法,否则我没有选项。