哪一个更好?在类中声明成员变量或返回方法的参数?性能方面哪一个更好。
class A{
//Declaring member variable
private string name;
private int age;
private method Display()
{
Passing();
Console.Write("{0}-{1}",name,age);
}
private void Passing()
{
name = "Hello World";
age = 21;
}
}
或
class A{
//out parameter implementation
private method Display()
{
string name= string.Empty;
int age = 0;
Passing(out name,out age);
Console.Write("{0}-{1}",name,age);
}
private void Passing(out string name,out int age)
{
name = "Hello World";
age = 21;
}
}
答案 0 :(得分:7)
他们中没有人。我会去:
class A
{
private void Display()
{
string name = Passing();
Console.WriteLine(name);
}
private string Passing()
{
return "Hello world";
}
}
如果你想要返回多个东西,我会把它封装在像这样的对象中:
class A
{
private void Display()
{
var person= Passing();
Console.WriteLine(person.Name + ": " + person.Age);
}
private Person Passing()
{
return new Person() {Name = "John Doe", Age = 99 };
}
}
答案 1 :(得分:3)
class A
{
private void Display()
{
string name = GetString();
Console.Write(name);
}
private string GetString()
{
return "Hello World";
}
}
不确定你想要在这里实现什么。
现在好了,我们知道你想要实现什么,如果该方法纯粹是类的内部,那么它取决于你返回的值的范围。如果它们在逻辑上包含在类中,请转到成员变量。如果它们的范围仅限于方法中的内部使用,请将输出参数或自定义类型作为返回值(此处可以使用Tuple<>
)。
你甚至可以使用匿名类型,但正如Jon Skeet所说,它有点像hacky:
答案 2 :(得分:1)
当然,前者。使用输出参数通常不是一个好主意。不要误解我的意思,params有它们的用途,但是在设置状态的情况下就像在这种情况下不要使用它们。它们适用于像TryParse这样的东西,你返回一个指示解析是否成功的bool,然后在out参数中返回解析的结果。
答案 3 :(得分:0)
我的偏好是:
class A
{
private static void Main(string[] args)
{
Passing passing = new Passing("Hello World");
Console.WriteLine(passing);
}
}
class Passing
{
public Passing(string name)
{
Name = name;
}
public string Name { get; private set; }
public override string ToString()
{
return string.Format("Name: {0}", Name);
}
}