Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递私有类以形成_C#_Private - Fatal编程技术网

C# 传递私有类以形成

C# 传递私有类以形成,c#,private,C#,Private,我有一些使用Murach的C#book的私人课程的小经验,但我仍然是一个新手。我正在尝试创建我自己的项目,其中包括一个“患者Id”“姓名”“体重”,然后是一个推荐的每日蛋白质摄入量方程式(体重*.86)。这最终将成为一个基本的数据库,然而,现在我甚至很难显示结果。此外,每日蛋白质摄入量的计算在我所做的课程中不起作用 这是我的班级代码: using System; using System.Collections.Generic; using System.Linq; using System.T

我有一些使用Murach的C#book的私人课程的小经验,但我仍然是一个新手。我正在尝试创建我自己的项目,其中包括一个“患者Id”“姓名”“体重”,然后是一个推荐的每日蛋白质摄入量方程式(体重*.86)。这最终将成为一个基本的数据库,然而,现在我甚至很难显示结果。此外,每日蛋白质摄入量的计算在我所做的课程中不起作用

这是我的班级代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Form1
{
public class Intake
{
    private string name;
    private int patientId;
    private int weight;
    //private int proteinIntake = weight * .86;


    //Constuctor
    public Intake() { }

    //Overload Constructor
    public Intake(string name, int patientId, int weight)
    {
        this.Name = name;
        this.PatientId = patientId;
        this.Weight = weight;


    }

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
    public int PatientId
    {
        get
        {
            return patientId;
        }
        set
        {
            patientId = value;
        }
    }
    public int Weight
    {
        get
        {
            return weight;
        }
        set
        {
            weight = value;
        }
    }


    public string GetDisplayText(string sep) =>
        name + patientId + sep + weight;
}
}
这是我的表格代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Form1
{
public partial class Form1 : Form
{
    public static Intake intake = null;


    public Form1()
    {
        InitializeComponent();
    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void btnCalculate_Click(object sender, EventArgs e)
    {

        Intake intake = new Intake(txtName.Text, Convert.ToInt32(txtPatientId.Text), Convert.ToInt32(txtWeight.Text) );

     //obviously does not work  MessageBox.Show("Name: " + intake.name);





    }


}
}

如果有关系的话,这是我难看的表单

我不太理解你的问题,我没有读过你提到的书,但从我看到,你的摄入类不是私有的,所以唯一的问题是你试图在你的MessageBox中显示一个私有字段,因此,如果你取消对语句的注释,它根本不会编译。 因此,如果要在MessageBox中显示实例的名称:

MessageBox.Show("Name: " + intake.Name);
肯定会有用的。 你要记住的唯一一件事(在这种情况下)是私人领地和公共财产之间的区别。 私有字段只能在类内部访问,公共属性可以由所有程序访问

公开

访问不受限制


受保护

访问权限仅限于包含类或从包含类派生的类型


内部

访问权限仅限于当前程序集


受保护的内部

访问权限仅限于从包含类派生的当前程序集或类型


私人

访问权限仅限于包含的类型


我不太理解你的问题,我没有读过你提到的书,但从我看到的情况来看,你的摄入类不是私有的,所以唯一的问题是你试图在你的MessageBox中显示一个私有字段,因此,如果你取消对语句的注释,它根本不会编译。 因此,如果要在MessageBox中显示实例的名称:

MessageBox.Show("Name: " + intake.Name);
肯定会有用的。 你要记住的唯一一件事(在这种情况下)是私人领地和公共财产之间的区别。 私有字段只能在类内部访问,公共属性可以由所有程序访问

公开

访问不受限制


受保护

访问权限仅限于包含类或从包含类派生的类型


内部

访问权限仅限于当前程序集


受保护的内部

访问权限仅限于从包含类派生的当前程序集或类型


私人

访问权限仅限于包含的类型


在Intrange类中,添加GetProteinIntake()方法:

在表单中,将btnCalculate\u单击事件替换为:

private void btnCalculate_Click(object sender, EventArgs e)
{
    Intake intake = new Intake(txtName.Text, Convert.ToInt32(txtPatientId.Text), Convert.ToInt32(txtWeight.Text));
    txtProtein.Text = intake.GetProteinIntake().ToString();
}

在Intrange类中,添加GetProteinIntake()方法:

在表单中,将btnCalculate\u单击事件替换为:

private void btnCalculate_Click(object sender, EventArgs e)
{
    Intake intake = new Intake(txtName.Text, Convert.ToInt32(txtPatientId.Text), Convert.ToInt32(txtWeight.Text));
    txtProtein.Text = intake.GetProteinIntake().ToString();
}
仅供参考:在“摄入”类中,您可以重写ToString()

然后你可以使用

MessageBox.Show(intake.ToString());
仅供参考:在“摄入”类中,您可以重写ToString()

然后你可以使用

MessageBox.Show(intake.ToString());

正在执行
MessageBox.Show(“名称:”+inctain.Name)不起作用,但正在执行
MessageBox.Show(“名称:”+inctain.Name)应该可以正常工作。执行
MessageBox.Show(“Name:”+inctain.Name)不起作用,但正在执行
MessageBox.Show(“名称:”+inctain.Name)应该可以正常工作。你能详细说明一下吗?我试着使用这个,但得到了“错误CS1503参数1:无法从'double'转换为'string'”我想把它分配给我的文本框,它将是“txtProtein.Text”哦,你应该将
public int
更改为
public double
(没有注意数字类型),然后可以使用
intain.getproteininke().ToString()
将其分配给textbox.intain.getproteininke().ToString(txtProtein.Text);还是不算。知道为什么吗?抱歉。。。这将是
txtProtein.Text=administration.GetProteinIntake().ToString()
这也不起作用。。。我做错什么了吗?你能详细说明一下吗?我试着使用这个,但得到了“错误CS1503参数1:无法从'double'转换为'string'”我想把它分配给我的文本框,它将是“txtProtein.Text”哦,你应该将
public int
更改为
public double
(没有注意数字类型),然后可以使用
intain.getproteininke().ToString()
将其分配给textbox.intain.getproteininke().ToString(txtProtein.Text);还是不算。知道为什么吗?抱歉。。。这将是
txtProtein.Text=administration.GetProteinIntake().ToString()
这也不起作用。。。我做错什么了吗?