C# 在一个.cs文件中包含两个类

C# 在一个.cs文件中包含两个类,c#,asp.net,entity-framework,class,C#,Asp.net,Entity Framework,Class,我是新手,也许我做错了什么。我的.cs文件名为PayrollDetails.cs。在其中,我创建了两个类(1)GetGrossPay和(2)PayrollDetails。GrossPay类中有一些getter和setter方法,我想使用它们。为什么我不明白 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespac

我是新手,也许我做错了什么。我的.cs文件名为PayrollDetails.cs。在其中,我创建了两个类(1)GetGrossPay和(2)PayrollDetails。GrossPay类中有一些getter和setter方法,我想使用它们。为什么我不明白

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace SSPModel
{
public class getGrossPay {
       public List<BasicPay> BPList;
       private List<Allowance> AlGradeList;
       private List<Allowance> AlPostList;
       private List<AdditionalEarnings> AdEarnList;
       private List<Benefits> BenList;

       public void setBPList(List<BasicPay> a)
       {
           BPList = a;

       }
       public List<BasicPay> GetBPList() {

           return BPList;
       }

       public List<Allowance> GetAlGradeList()
       {
           return AlGradeList;
       }

       public void setAlGradeList(List<Allowance> a)
       {
           AlGradeList = a;
       }

       public List<Allowance> GetAlPostList()
       {
           return AlPostList;
       }

       public void setAlPostList(List<Allowance> a)
       {
           AlPostList = a;
       }
       public List<AdditionalEarnings> GetAdEarnList()
       {
           return AdEarnList;
       }

       public void setAdEarnList(List<AdditionalEarnings> a)
       {
           AdEarnList = a;
       }


       public List<Benefits> GetBenList()
       {
           return BenList;
       }

       public void setBenList(List<Benefits> a)
       {
           BenList = a;
       }
       public void ssss(getGrossPay inst)
       {
        List<BasicPay> a =   inst.GetBPList();
        for (int i = 0; i < a.Count(); i++)
        {
            Debug.WriteLine(a.ElementAtOrDefault(i));

        }

       }
       }
      }

    public class PayrollDetails
    {

        public static void doSomething()
        {
             // i am not getting to call any method from the class getGrossPay.
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统诊断;
名称空间SSPModel
{
公开课{
公开名单;
私人名单;
私人名单;
私人名单;
私人名单;
公共空间列表(列表a)
{
BPList=a;
}
公共列表GetBPList(){
返回BPL列表;
}
公共列表GetAlGradeList()
{
返回成绩表;
}
公共无效集合等级列表(列表a)
{
AlGradeList=a;
}
公共列表GetAlPostList()
{
返回AlPostList;
}
公共void setAlPostList(列表a)
{
AlPostList=a;
}
公共列表GetAdEarnList()
{
返回学习列表;
}
公共无效集合学习列表(列表a)
{
AdEarnList=a;
}
公共列表GetBenList()
{
返回列表;
}
公共登记(列表a)
{
BenList=a;
}
公共空间SSS(getGrossPay inst)
{
列表a=inst.GetBPList();
对于(int i=0;i

另外,关于一个不相关的问题,我需要一些关于最佳实践的建议。我还有其他的.cs文件(例如BasicPay.cs、amount.cs),我在其中计算值。然后,我将在GrossPay类中调用setter方法(这非常好),但我希望在另一个位置(或.cs文件)中使用get方法。我基本上想把它放在一个地方,然后在另一个地方使用getter。如果我在另一个.cs或位置创建了一个新的实例来使用getter方法,它将导致null。你知道怎么做吗?我基本上有一长串我想做的函数,当我完成一个函数时,我使用setter等等,当所有的函数都完成时,调用getter方法来完成所有设置,然后进行计算。任何帮助都将不胜感激。一个经验丰富的程序员可能有更好的方法来实现这一点。

在一个文件中包含两个类并不违法。实际上,您可以在一个文件中生成整个程序

这都是关于可读性的。每个类有一个文件是很方便的,文件名通常是类名


随着项目规模的扩大,您可以使用名称空间将所有代码拆分为模块。

doSomething
PayrollDetails
中的静态方法。
getGrossPay
中的方法和成员不是静态的,它们是实例方法和成员。您必须先实例化一个新的getGrossPay,然后才能对其调用方法

public static void doSomething()
{
  var grossPay = new getGrossPay();
  var earnList = grossPay.GetAdEarnList();
  //etc.
}

两件事:
getGrossPay
是一个动作,而不是一件事,所以请给您的类调用其他东西(可能只是
GrossPay
?)。还有,C#功能。它们非常有用——基本上是对您定义的getter/setter方法的抽象。