我想定义像这样的新“简单”类型(在delphi中):
type
TString2 = string[2];
TString10 = string[10];
TYesNo = (isNull=-1, isNo=0, isYes=1);
TBit2 = 0..3;
然后,在我的类字段中使用它,就像这样(再次在delphi中):
TCMDchild = class(TCMDParent)
strict protected
fSgMrMs: TString2;
fSgIsMale: TYesNo;
fSgValue1: TBit2;
......
¿有没有办法在C#(VS2010)中获得同样简单的“简单类型构造”?
感谢您的评论。
答案 0 :(得分:0)
不,C#中没有类似的任何类型别名。它没有被包括在内,因为大部分时间它都被用来隐藏代码所做的而不是使代码更清晰。
此外,您没有在C#中指定字符串的大小,并且没有范围限制的数字。您可以使用在设置值时检查值的属性。
对于YesNo
类型,您可以使用枚举:
public enum YesNo {
No = 0,
Yes = 1,
Null = -1
}
class CommandChild : CommandParent {
private string _fSgMrMs;
private string _fSgValue1;
public string fSgMrMs {
get { return _fSgMrMs; }
set {
if (value.Length > 2) {
throw new ArgumentException("The length of fSgMrMs can not be more than 2.");
}
_fSgMrMs = value;
}
}
public YesNo fSgIsMale { get; set; }
public int fSgValue1 {
get { return _fSgValue1; }
set {
if (value < 0 || value > 3) {
throw new ArgumentException("The value of fSgValue1 hase to be between 0 and 3.");
}
_fSgValue1 = value;
}
}
}
注意:您应该尝试使用比“fSgMrMs”更具描述性的名称。
答案 1 :(得分:0)
对于TYesNo,您可以使用枚举:
public enum TYesNo
{
IsNull = -1,
No = 0,
Yes = 1
}
对于其他人,您可以使用属性并检查setter中的长度:
public class TCmdChild : TCmdParent
{
public TYesNo FSgIsMale { get; set; }
protected string fSgMrMs;
public string FSgMrMs
{
get { return fSgMrMs; }
set
{
if(value.Length > 2)
throw new OutOfRangeException("Value.Length needs to be <= 2");
fSgMrMs = value;
}
}
}
答案 2 :(得分:0)
是的,你可以那样做
您可以使用使用关键字在C和C ++中执行类似delphi Type或typedef的操作。
可在此处找到更多信息: