C# 将156个字符串传递给多个函数

C# 将156个字符串传递给多个函数,c#,winforms,.net-4.0,C#,Winforms,.net 4.0,我有一个c#winforms.NET4应用程序,它接收一条156个字符的消息,然后我将此消息原封不动地依次传递给多个函数 我的问题是,继续传递与参数相同的值是低效的还是有更有效的方法 因此,目前我有: string code = getTheCode(); \\decode first part string result1 = getResult1(code); string result2 = getResult2(code); ... 代码的值在初始赋值后不会更改。将同一代码传递给多个方

我有一个c#winforms.NET4应用程序,它接收一条156个字符的消息,然后我将此消息原封不动地依次传递给多个函数

我的问题是,继续传递与参数相同的值是低效的还是有更有效的方法

因此,目前我有:

string code = getTheCode();
\\decode first part
string result1 = getResult1(code);
string result2 = getResult2(code);
...

代码的值在初始赋值后不会更改。

将同一代码传递给多个方法可能会降低效率。如果您发现必须多次这样做,您可能希望创建一个负责“获取结果”的类。在此新类的构造函数中传递“代码”。通过这种方式,您可以在类的生命周期内重用“代码”,而不必一直将相同的值作为参数传递

您可以创建一个具有构造函数的类,该构造函数要求您将字符串作为参数传递,并将其设为私有属性。然后,您可以使用使用此私有属性计算结果的方法检索数据

当然,这只是您喜欢的编码风格的问题(以及您是否将在一个或多个地方使用这些方法)。对我来说,它更具可读性,您可以确保代码变量不会在ResultGetter类的实例中更改

public class ResultGetter
{
    private readonly string _code;

    public ResultGetter(string code)
    {
        _code = code;
    }

    public string GetResult1()
    {
        var returnValue = // do something with _code property    
        return returnValue; 
    }

    public string GetResult2()
    {
        var returnValue = // do something with _code property
        return returnValue;
    }

    // et cetera ad nauseam
}
然后在主文件中:

var code = getTheCode();
var rg = new ResultGetter(code);
string result1 = rg.GetResult1();
string result2 = rg.GetResult2();

答案是否定的。保持传递同一字符串作为参数并不是低效的。您只是传递对字符串的引用,因此非常有效。

字符串是不可变的,因此它们无论如何都不会更改。它们也是引用类,因此在多次使用同一变量作为参数时,不需要复制。最后,156个字符是一个小字符串,字符串不会被复制,所以这是最有效的。您实际上是在传递指针。
code
是一个字符串。为什么在多个函数调用中使用相同的字符串值效率低下?在字符串之上引入另一个类会有什么帮助呢?我是说,如果有许多方法需要相同的字符串作为参数,那么可能需要一个负责获取结果的类。当然,您可以将字符串传递给多个函数。但是,将相同的字符串传递给许多函数听起来像是在创建一个职责太多的类。除了更加冗长之外,这与原始类有什么不同?字段访问或参数访问,都是一样的。字符串是引用类。唯一传递的是指针。不过,通过在字符串顶部添加另一个类,GC有两个对象,而不是我看到的一个对象,更详细的内容更可读,这是编码首选项的问题。这当然是OP方法的另一种选择,也是我更喜欢的方法。它几乎不比OP使用的更有效。