在下面的斜体代码中,为什么我们不将"IntIndexer"放在myData = new string [size]之前; 因为Customer cust = new Customer(); (假设客户是班级的名称):
*Customer cust = new Customer();*
Run Code Online (Sandbox Code Playgroud)
使用系统;
/// <summary>
/// A simple indexer example.
/// </summary>
class IntIndexer
{
private string[] myData;
public IntIndexer(int size)
{
*myData = new string[size];*
for (int i = 0; i < size; i++)
{
myData[i] = "empty";
}
}
Run Code Online (Sandbox Code Playgroud)
第一行(cust)声明并初始化字段或变量.
在第二个示例中,field(myData)是针对类型声明的,并且在构造函数(IntIndexer(...))中初始化.如果(在构造函数中)我们在它之前放置了一个类型,我们将声明一个具有相同名称的局部变量.这会令人困惑(你必须分别使用this.myData和myData引用字段和变量).
打破这个:
Customer cust = new Customer();
Run Code Online (Sandbox Code Playgroud)
这可以分为两部分:
Customer cust;
cust = new Customer();
Run Code Online (Sandbox Code Playgroud)
第一行表示该名称cust将能够引用类型的对象Customer.第二行创建一个新Customer对象并cust引用它.
你给出的另一个例子已经分为两部分:
private string[] myData;
Run Code Online (Sandbox Code Playgroud)
和:
myData = new string[size];
Run Code Online (Sandbox Code Playgroud)
如果字符串数组的长度恒定,我们也可以将它折叠到一行上IntIndexer(在构造函数之前).
private string[] myData = new string[100];
Run Code Online (Sandbox Code Playgroud)
但是我们需要使用size传入IntIndexer构造函数,因此我们必须将声明和初始化分为两个步骤.
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |