444*_*444 5 c# parameters class
假设一个名为"Place"的类存储位置和相关细节:
class Place
{
string Name;
string Location;
// etc...
}
Run Code Online (Sandbox Code Playgroud)
稍后我们将填写多达80个不同城镇的名称和详细信息.所以我们将这些城镇以数字方式存储在一个数组中:
class Setup
{
public static GetTowns
{
for (int i = 1; i <= numberOfTowns; i++)
{
Town[i] = new Place(name, location);
}
// more code...
}
// more methods...
}
Run Code Online (Sandbox Code Playgroud)
要访问特定城镇及其数据,我们将城镇本身作为参数传递并接收:
public static void DescribeTown(Place Town)
{
// example method from some other class
Console.WriteLine("Shipping to {0}.", Town.Name);
}
Run Code Online (Sandbox Code Playgroud)
其他方法需要访问多个城镇或所有城镇.然后我们可以将整个Town数组作为参数传递:
public static void ListAllTowns(Place[] Town)
{
Console.WriteLine("Our Beloved Clients:");
foreach (Place here in Town)
{
Console.WriteLine("{0} in {1}", here.Name, here.Location);
// Various other operations requiring info about the Towns
}
}
Run Code Online (Sandbox Code Playgroud)
完整参考,C#2.0,陈述如下
参数是接收调用时传递给方法的参数值的变量.
这似乎表明每个类的实例以及所涉及的所有数据都会在ListAllTowns
每次调用时传递.这对我来说听起来很浪费,但是呢?
(出于概念验证的原因,此示例大大简化,但方法需要读/写权限以及多个城镇之间的比较.)
没有什么可以浪费的.您没有传递所有项目的副本,您只是创建一个数组,然后将对该数组的引用传递给该ListAllTowns
方法(数组是引用类型).
你正在以正确的方式做事(其中之一).
小智 2
默认情况下,C# 中的所有类都是引用,因此只有一个指针被发送到函数。
回答你的问题:这取决于。有时,将整个对象作为参数发送实际上确实有意义(即我们正在尝试使用对象进行某些操作)。另一方面,仅为函数参数创建类可能不太好。在您的特定示例中,创建一个类确实有意义。
我刚才所说的一个例外是:结构体作为副本发送(所有成员都将被复制)。将这些作为函数参数发送时必须小心。
归档时间: |
|
查看次数: |
1772 次 |
最近记录: |