C#中如何实现Delphi中限制数据的取值范围呢?比如Day只取1-31的数据。

mychinabc 2011-10-18 09:53:03
最近看到Delphi中有一个定义

type
TDateRec = record
Year: Integer;
Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);
Day: 1..31;
end;

这里限制了TDateRec.Day的值只能是1-31的integer类型, 想问一下NET中是否有这样定义相应的方法?


namespace Demo
{
public enum eMonth
{
Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
}

public class CDateClass
{
public int Year { get; set; }
public eMonth Month { get; set; }
public int Day { get; set; }
}
}


CDateClass d=new CDateClass();
d.Month = eMonth.Nov;
d.Year = 2011;
d.Day = 60; //这里没有限制,所以可以赋一个错误的值。
...全文
123 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mychinabc 2011-10-21
  • 打赏
  • 举报
回复
看来只能在Set属性里面加判断了。thank all.
潘少博 2011-10-18
  • 打赏
  • 举报
回复
3L 4L方法都不错

做程序最重要的是创造!没有固定的模式。
sdl2005lyx 2011-10-18
  • 打赏
  • 举报
回复
把Day设置成枚举变量:

public enum eDay
{
1,2,3,4,5,6,7 。。。。。。
}

public class CDateClass
{
public int Year { get; set; }
public eMonth Month { get; set; }
public eDay Day { get; set; }
}
sunny906 2011-10-18
  • 打赏
  • 举报
回复
用属性实现约束

public class CDateClass
{
//public int Year { get; set; }
//public eMonth Month { get; set; }
private int m_Day = 1;
public int Day
{
get
{
return m_Day;
}
set
{
if (value >= 1 && value <= 31)
{
m_Day = value;
}
else
{
m_Day = 1;
}
}
}
}


private void button1_Click(object sender, EventArgs e)
{
CDateClass d = new CDateClass();
d.Day = 2;
Console.WriteLine(d.Day);
d.Day = 200;
Console.WriteLine(d.Day);
}
//输出
//2
//1
阿非 2011-10-18
  • 打赏
  • 举报
回复
那个是Delphi中的子界类型

C# 中没办法

你或者设置成枚举,或者运行时判断
mychinabc 2011-10-18
  • 打赏
  • 举报
回复
自己顶一下,对Delphi功力不够,不知道是否理解正确,望大虾们指教一下。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧