2017-04-13 80 views
0

我有一个c#winforms.net 4应用程序,它接收到一个156个字符的消息,然后我将这个消息依次传递给多个函数。将156个字符串传递给多个函数

我的问题是保持传递相同的值作为参数效率低下还是存在更有效的方法?

所以目前我有:代码

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

值的初始分配之后不会改变。

+2

字符串是不可变的,所以它们永远不会改变。它们也是引用类,因此,当多次使用同一个变量作为参数时,不会涉及复制。最后,156个字符是一个*小*字符串 –

+0

字符串不会被复制,所以这是一样有效的。你本质上是传递一个指针。 – dasblinkenlight

回答

1

答案是否定的。继续传递相同的字符串作为参数并不是没有效率的。你只是传递一个对字符串的引用,所以它非常有效。

-1

将相同的代码传递给几种方法可能是低效率的。如果您发现必须多次执行此操作,则可能需要创建一个负责“获取结果”的类。在这个新类的构造函数中传递''代码'。通过这种方式,您可以在课程的整个生命周期中重复使用“代码”,而且不必保留与参数相同的值

+0

'code'是一个*字符串*。为什么在多个函数调用中使用相同的字符串值效率不高?如何在字符串帮助之上引入另一个*类? –

+0

我在说如果你有很多需要相同字符串作为参数的方法,你可能需要一个负责获取结果的类。当然,你可以将一个字符串传递给几个函数。然而,将相同的字符串传递给许多函数听起来像是在创建一个负责过多的类。 –

0

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

但是,这只是你喜欢的编码风格的问题,当然(你是否会在一个或多个地方使用这些方法)。对我来说,它更具可读性,并且您可以确保代码变量在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(); 
+0

除了更详细的内容之外,这将如何与原始文件不同?字段访问或参数访问,它是一样的。字符串是参考类。唯一传递的是一个指针。通过在字符串的顶部添加另一个类,您可以将*两个*对象转换为GC,而不是一个 –

+0

我可以看到它,更详细的是更具可读性,它是编码偏好的问题。这当然是OP方法的替代方案,我更喜欢。这比OP使用的效率要高得多。 – schroedingersKat