我有一个名为第一类:不能值传送到另一个类(C#)
Appartments[] appartments;
我想复制“数”的值,并将其粘贴到“AppartmentInfo.cs”级(我猜他们被称为参数)。
public static void FindFloor(Appartments[] appartments, int amount,out int floorToRound,out AppartmentInfo[] AInfo)
{
floorToRound = 0;
AInfo = new AppartmentInfo[Max];
for (int i = 0; i < amount; i++)
{
AInfo[i].Floor1 = Convert.ToDouble(appartments[i].Number);
Console.WriteLine(appartments[i].Number);
if (appartments[i].Number < 27)
{
appartments[i].Number = 1;
}
else
{
appartments[i].Number /= 27;
}
}
}
如果有需要我可以发布整个代码。我收到错误: NullReferenceException未处理。
错误就行了:
AInfo[i].Floor1 = Convert.ToDouble(appartments[i].Number);
全码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace P3._1
{
class Program
{
public const int Max = 20;
static void Main(string[] args)
{
int amount, AmountOfRooms, price, floor, floorToRound;
Appartments[] appartments;
AppartmentInfo[] AInfo;
//AppartmentInfo AInfo = new AppartmentInfo();
ReadData(out appartments, out amount);
TextImput(out floor, out AmountOfRooms, out price);
FindFloor(appartments, amount,out floorToRound,out AInfo);
Console.ReadKey();
}
public static void ReadData(out Appartments[] appartments, out int amount)
{
amount = 0;
appartments = new Appartments[Max];
using (StreamReader reader = new StreamReader("C:\\Users\\Andrius\\Desktop\\Mokslams\\C#\\Pratybos\\P3\\P3.1 be konstruktoriaus\\Appartments.csv", true))
{
reader.ReadLine();
string line = null;
while (null != (line = reader.ReadLine()))
{
string[] values = line.Split(',');
int number = int.Parse(values[0]);
int area = int.Parse(values[1]);
int rooms = int.Parse(values[2]);
int sellingCost = int.Parse(values[3]);
int phone = int.Parse(values[4]);
Appartments appartmentsObj = new Appartments(number, area, rooms, sellingCost, phone);
appartments[amount++] = appartmentsObj;
}
}
}
public static void TextImput(out int floor, out int AmountOfRooms, out int price)
{
AmountOfRooms = 0;
price = 0;
Console.WriteLine("Iveskite buto aukštą: ");
floor = int.Parse(Console.ReadLine());
Console.WriteLine("Iveskite kambariu skaiciu: ");
AmountOfRooms = int.Parse(Console.ReadLine());
Console.WriteLine("Maksimali kaina: ");
price = int.Parse(Console.ReadLine());
}
public static void FindFloor(Appartments[] appartments, int amount,out int floorToRound,out AppartmentInfo[] AInfo)
{
floorToRound = 0;
AInfo = new AppartmentInfo[Max];
for (int i = 0; i < amount; i++)
{
AInfo[i].Floor1 = Convert.ToDouble(appartments[i].Number);
Console.WriteLine(appartments[i].Number);
if (appartments[i].Number < 27)
{
appartments[i].Number = 1;
}
else
{
appartments[i].Number /= 27;
}
}
}
}
}
从我的观点,量从未通过边界。我刚刚上传完整代码 – Andrius
它在for循环的第一次迭代中失败吗? – Banners
我问,因为我跟Bens回答的描述一致。他说得对。您的数组已初始化,但其中的元素不是。 – Banners