C#类列表和属性
我对编程非常陌生,所以对你们大多数人来说,这可能是一个愚蠢的问题,但是,既然我已经尝试在谷歌上搜索,下面是: 我创建了一个包含一些属性和2个方法的类,其中一些属性应该用于第一个方法,另一个用于第二个方法 这两个方法都返回一个列表,我的问题是这两个列表都返回所有属性。不知道为什么,因为我没有在两种方法中都使用它们。。。以下是一个例子:C#类列表和属性,c#,list,class,C#,List,Class,我对编程非常陌生,所以对你们大多数人来说,这可能是一个愚蠢的问题,但是,既然我已经尝试在谷歌上搜索,下面是: 我创建了一个包含一些属性和2个方法的类,其中一些属性应该用于第一个方法,另一个用于第二个方法 这两个方法都返回一个列表,我的问题是这两个列表都返回所有属性。不知道为什么,因为我没有在两种方法中都使用它们。。。以下是一个例子: class orders { public string invoiceID { get; set; } public string employe
class orders
{
public string invoiceID { get; set; }
public string employee { get; set; }
public string store { get; set; }
public string client { get; set; }
public string invoiceDate { get; set; }
public string total { get; set; }
public string totalYear { get; set; }
public string year { get; set; }
public static List<orders> getOrders()
{
string sSQL = "bla bla bla huge query "
DBConnect connect = new DBConnect();
DataTable dt = new DataTable();
dt = connect.getBD(sSQL);
List<orders> o = new List<orders>();
for (int i = 0; i < dt.Rows.Count; i++)
{
orders ord = new orders();
ord.invoiceID = dt.Rows[i]["invoiceid"].ToString();
ord.employee = dt.Rows[i]["empname"].ToString();
ord.store = dt.Rows[i]["storename"].ToString();
ord.client = dt.Rows[i]["clientname"].ToString();
ord.invoiceDate = ((DateTime)dt.Rows[i]["invoicedate"]).ToString("dd-MM-yyyy");
ord.total = dt.Rows[i]["total"].ToString();
o.Add(ord);
}
return o;
类命令
{
公共字符串invoiceID{get;set;}
公共字符串employee{get;set;}
公共字符串存储{get;set;}
公共字符串客户端{get;set;}
公共字符串invoiceDate{get;set;}
公共字符串总计{get;set;}
公共字符串totalYear{get;set;}
公共字符串年份{get;set;}
公共静态列表getOrders()
{
string sSQL=“bla bla bla巨大查询”
DBConnect connect=新的DBConnect();
DataTable dt=新的DataTable();
dt=connect.getBD(sSQL);
列表o=新列表();
对于(int i=0;i
因此,在这种方法中,我没有使用公共属性年和totalYear,但它们仍然出现在列表中:(
我做错了什么
提前感谢,并对noob的问题表示歉意
更新1(第二种方法)
publicstaticlist getTotalYearInvoices()
{
DateTime date=DateTime.Now;
int year=日期。年份;
列表o=新列表();
对于(int i=2009;i
我不太明白你的意思,但是
你的财产:
public string totalYear { get; set; }
public string year { get; set; }
设置为“公共”,因此它们将显示在以下列表中:
List<orders> getOrders()
List getOrders()
如果你不想让他们出现,就把他们保密
此外,如果不希望显示所有订单属性,则
可以创建多个类并从中继承
试想一下,您正在重新调整具有所有属性的订单列表
设置为public,因此它们将始终出现,尽管它们没有
正在初始化或具有值
您应该创建两个不同的类。一个用于订单,另一个用于订单日期,如果您不希望它们总是出现的话。getOrders方法返回的是订单列表。Orders类具有year和totalYear属性,即使您没有设置它们,在实例化这个类的实例
顺便说一句,我建议您使用类型名称,也可以使用单数名词(即Order而不是orders)。您可以将类
orders
分为两类:
(你为什么不这么做?)
公共类基序
{
公共字符串invoiceID{get;set;}
公共字符串employee{get;set;}
公共字符串存储{get;set;}
公共字符串客户端{get;set;}
公共字符串invoiceDate{get;set;}
公共字符串总计{get;set;}
公共静态列表getOrders()
{
//您的实现
}
}
然后你就可以订约会单了
public class DateOrders
{
public string totalYear { get; set; }
public string year { get; set; }
public static List<DateOrders> getTotalYearInvoices()
{
//your implementation
}
}
公共类日期顺序
{
公共字符串totalYear{get;set;}
公共字符串年份{get;set;}
公共静态列表getTotalYearInvoices()
{
//您的实现
}
}
你的问题不是你的代码你的问题是你认为你在做什么:)编写OO代码是为了了解OO是什么以及它是如何工作的 但是现在,对于您的“问题”,您肯定会看到您的属性,因为它们都是
公共的
,所以让我们根据您的代码深入到OO
让我们从您的类名开始订单
它应该是Order
,因为此类型的每个对象都是单个订单
现在让我们看看哪些属性只与订单相关
public string invoiceID { get; set; }
public string employee { get; set; }
public string store { get; set; }
public string client { get; set; }
public string invoiceDate { get; set; }
public string total { get; set; }
很好,现在我们有了所有相关的属性
之后,我们可以继续使用您的方法
您的第一个方法公共静态列表getOrders()
我会将其重命名为
公共静态列表getAllOrders()
getAll,因为我在您提供的代码中看不到限制,所以您的列表将正确包含数据库中的所有订单,否则您应该将该限制添加到方法名称(示例getOpenOrders()) 现在确定第二种方法 现在它来了,我们需要两个属性
public string totalYear { get; set; }
public string year { get; set; }
是吗?不是真的
现在你有多种选择
- 创建一个单独的类,该类将包含此属性
- 使用
- 使用
字典
- 使用
数据表
这是您自己的决定…考虑到您试图将orders类视为某种发票系统或购物车,因此我将有两个类用于此
public class InvoiceSystem
{
private List<Invoice> currentOrders;
public InvoiceSystem()
{
currentOrders = new List<Invoice>();
}
public void Populate()
{
//fill your list from the database
}
public void Save()
{
//Save list back to database
}
public List<Invoice> GetInvoices(/*perhaps something to filter */ )
{
// return filtered list, or entire list.
}
public decimal GetTotalForYear(int year)
{
// iterate through list (or use linq) to get total and return it
}
}
public class Invoice
{
public int InvoiceID { get; set; }
public string Employee { get; set; }
public string Store { get; set; }
public string Client { get; set; }
public DateTime InvoiceDate { get; set; }
public decimal Total { get; set; }
}
公共类发票系统
{
私人订单;
公共发票系统()
{
当前订单=n
public string totalYear { get; set; }
public string year { get; set; }
public class InvoiceSystem
{
private List<Invoice> currentOrders;
public InvoiceSystem()
{
currentOrders = new List<Invoice>();
}
public void Populate()
{
//fill your list from the database
}
public void Save()
{
//Save list back to database
}
public List<Invoice> GetInvoices(/*perhaps something to filter */ )
{
// return filtered list, or entire list.
}
public decimal GetTotalForYear(int year)
{
// iterate through list (or use linq) to get total and return it
}
}
public class Invoice
{
public int InvoiceID { get; set; }
public string Employee { get; set; }
public string Store { get; set; }
public string Client { get; set; }
public DateTime InvoiceDate { get; set; }
public decimal Total { get; set; }
}