[英]C#: Class does not contain a definition
我目前正在嘗試通過名稱搜索對象數組,並希望輸出為數組的索引。 但是,當我嘗試調用搜索函數時發生錯誤(不包含定義)。 我不知道如何解決這個問題。
我對編程非常陌生,所以如果我做錯了所有事情,請原諒我,請保持簡單。
class Program
{
static void Main(string[] args)
{
//Initialize array based on number of records
RecordArray.Init(5);
//Calling FindByName
RecordArray.FindByName (RecordArray.rArray, "Name3");
}
}
public class RecordClass
{
//Declaring member variables
public string Name;
public int Number;
public string Email;
}
public class RecordArray
{
public static void Init(int Size)
{
//RNG for phone numbers
Random Rnd = new Random();
//Creating an array of RecordClass
RecordClass[] rArray = new RecordClass[Size];
//Loop through the array
for(int i = 0; i < rArray.Length; i++)
{
rArray[i].Name = "Name" + i;
rArray[i].Number = Rnd.Next();
rArray[i].Email = rArray[i].Name + "@gmail.com";
}
}
public static int FindByName(RecordClass[] rArray, string Name)
{
//Loop through rArray to find if Name matches. If match, return index. Otherwise, return -1.
for(int i = 0; i < rArray.Length; i++)
{
if (rArray[i].Name == Name)
{
return i;
}
}
return -1;
}
}
}
rarray僅在函數中聲明,因此您將無法訪問它。 你可以嘗試這樣的事情
public static RecordClass[] Init(int Size)
{
//RNG for phone numbers
Random Rnd = new Random();
//Creating an array of RecordClass
RecordClass[] rArray = new RecordClass[Size];
//Loop through the array
for(int i = 0; i < rArray.Length; i++)
{
RecordClass record = new RecordClass();
record.Name = "Name" + i;
record.Number = Rnd.Next();
record.Email = record.Name + "@gmail.com";
rArray[I] = record;
}
return rArray;
}
static void Main(string[] args)
{
//Initialize array based on number of records
//Calling FindByName
RecordArray.FindByName (RecordArray.Init(5), "Name3");
}
首先,讓我開始說,幾乎不需要編寫自己的數組。
C#langange和.NET框架支持數組和許多其他集合類型,因此實際上並不需要它。
話雖如此,這是您當前代碼的問題所在:
RecordArray
類不包含名為rArray
的成員。
為了使代碼正常工作,您必須在init函數中拆分以下行:
//Creating an array of RecordClass
RecordClass[] rArray = new RecordClass[Size];
分成兩個單獨的代碼行。 首先,必須為rArray
創建一個靜態成員,其次,您需要在Init
方法中對其進行Init
:
public class RecordArray
{
public static RecordClass[] rArray {get; private set;}
public static void Init(int Size)
{
//RNG for phone numbers
Random Rnd = new Random();
//Creating an array of RecordClass
rArray = new RecordClass[Size];
//Loop through the array
for(int i = 0; i < rArray.Length; i++)
{
rArray[i] = new RecordClass();
rArray[i].Name = "Name" + i;
rArray[i].Number = Rnd.Next();
rArray[i].Email = rArray[i].Name + "@gmail.com";
}
}
public static int FindByName(RecordClass[] rArray, string Name)
{
//Loop through rArray to find if Name matches. If match, return index. Otherwise, return -1.
for(int i = 0; i < rArray.Length; i++)
{
if (rArray[i].Name == Name)
{
return i;
}
}
return -1;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.