2014-07-08 17 views
0

我有一个方法出论点没有声明的变量

TrySplitStringTwoParts(string data, string separator, out string prefix, out string suffix) 

它被称为以下列方式:

string data = "x.y", r1,r2; 
TrySplitStringTwoParts(data, ".", out r1, out r2) 

我没兴趣使用r1,即。除了这个调用之外,它从未被使用。 我可以通过我打电话给TrySplitStringTwoParts(data, ".", out r1, out r2)的方式,以便不申报r1

+0

r1和r2在哪里申报? – DevEstacion

+0

@RonaldEstacion - string data =“x.y”,r1,r2; – Yakov

+0

如何重载它? –

回答

4

现在你不能这样做。但是,这是将在C# 6。看到添加的罗斯林Language feature implementation status page

----------------------------------------------------------------- 
| Feature     | Example      | C# |    
----------------------------------------------------------------- 
| Declaration expressions | int.TryParse(s, out var x); | Done | 
----------------------------------------------------------------- 

,那么你就可以做到这一点的功能之一:

TrySplitStringTwoParts(data, ".", out string r1, out string r2) 

Ofcourse,这只会声明移到另一个地方,不声明变量是不可能的。如果你有一个ref/out参数,那么你必须声明并提供一个参数。如果你不想要这个参数,那么也许你应该考虑改变你的方法签名或使用方法重载。

+2

它只允许你在不同的地方声明变量,但你仍然必须声明它们。 – Guffa

0

不,您不能。 refout参数必须在调用中传递,而不管稍后是否实际使用该变量。