如何将方法从一种类型转换为另一种类型
本文关键字:一种 类型转换 类型 另一种 方法 | 更新日期: 2023-09-27 18:20:13
使用VS2010 ON ACCESS 2010为医院构建windows窗体应用程序。我想创建一个生成Patient
:的方法
public string GetCurrentDate()
{
DateTime currentDate = new DateTime();
string todaydate = currentDate.ToShortDateString().ToString();
return todaydate;
}
public Int32 MalePatient()
{
return 1;
}
public Int32 FemalePatient()
{
return 2;
}
public Int32 RadomNum()
{
Random randomNumer = new Random();
Int32 number = randomNumer.Next(0, 1000);
return number;
}
public string GeneratePatientNumber();
{
patientNumber = Convert.ToString(GetCurrentDate())"+ "-" ????
}
此格式的编号:
"Date of Enrollment" + "PatientGender" +"randomNumber"
Example of Male patientNumber of type string:2012-1-10
Example of Female patientNumber of type string:2012-2-8
Female=2
Male=1
但我对GeneratePatientNumber
方法有一个问题,它应该将另一个方法转换为字符串,并将它们连接起来,就像上面的两个示例一样。
public enum Gender
{
Male = 1,
Female = 2
}
class PatientNumberGenerator
{
private static Random _random = new Random();
public string GetCurrentDate()
{
return DateTime.Today.ToShortDateString();
}
public int RadomNum()
{
return _random.Next(0, 1000);
}
public string GeneratePatientNumber(Gender gender)
{
return GetCurrentDate() + "-" + (int)gender + "-" + RadomNum();
}
}
你可以称之为
var generator = new PatientNumberGenerator();
string patientNumber = generator.GeneratePatientNumber(Gender.Female);
小心随机类。每次创建新实例时,它都会根据当前日期和时间生成一个种子值。这决定了生成的第一个随机数。如果你多次快速调用RanomNum()
,它可能会生成相同的随机数,因为你电脑中的内部时钟分辨率有限。这就是我将其声明为静态成员的原因。这将只创建一次_random
。
String.Join
可能是您想要的:
public string GeneratePatientNumber()
{
return string.Join(
"-",
Convert.ToString(GetCurrentDate()),
GetGenderCode().ToString(),
RadomNum().ToString());
}
当然,您需要定义GetGenderCode
方法,以便它返回基于患者性别的预期代码。
我认为你应该使用这个:
public string GetCurrentDate()
{
DateTime currentDate = DateTime.Now;
string todaydate = currentDate.ToShortDateString().ToString();
return todaydate;
}
一点重构:
public enum PatientGender
{
Male = 1,
Female
}
public int RandomNum()
{
return new Random().Next(0, 1000);
}
var patientNumber = string.Format("{0}-{1}-{2}",
DateTime.UtcNow.ToString("yyyy-MM-dd"),
(int)PatientGender.Male,
RandomNum());
给出以下输出:
2012-01-11-1-586