下面这段代码的功能是给画面上的某个控件显示指定的内容
this.SetInfoString((int)HeaderInfoPosition.Gakunen, EnumGakunen.GetName(
this.DTOGakureibo.Gakunen.ToString()), true, MkLabelForeColorStyle.Nomal);(int)HeaderInfoPosition.Gakunen :控件
EnumGakunen.GetName(this.DTOGakureibo.Gakunen.ToString()):显示内容,当然如果我写固定值“程序员”,那么就会直接显示程序员。
其余参数不考虑。以下,是第二个参数EnumGakunen的代码
[EnumDefinition("学年")]
public class EnumGakunen : EnumItemBase<string, EnumGakunen>, IEnumItem
{
protected EnumGakunen(string val, string name) : base(val, name) { }
public static implicit operator string(EnumGakunen value) { return value.value_; }
public static explicit operator EnumGakunen(string value) { return Convert(value); }
public static implicit operator int(EnumGakunen value) { return Int32.Parse(value.value_); }
public static explicit operator EnumGakunen(int value) { return Convert(value.ToString()); }
#endregion #region
public struct cst
{
/// <summary>小学1年</summary>
public const string Sho1 = "1";
/// <summary>小学2年</summary>
public const string Sho2 = "2";
/// <summary>小学3年</summary>
public const string Sho3 = "3";
}
#endregion /// <summary>小学1年(Enum值)</summary>
public readonly static EnumGakunen Sho1 = new EnumGakunen(cst.Sho1, "小学1年");
/// <summary>小学2年(Enum值)</summary>
public readonly static EnumGakunen Sho2 = new EnumGakunen(cst.Sho2, "小学2年");
/// <summary>小学3年(Enum值)</summary>
public readonly static EnumGakunen Sho3 = new EnumGakunen(cst.Sho3, "小学3年");
}
#endregion EnumGakunen我的问题是:
1、 不清楚EnumGakunen为什么要这么写,这部分内容属于C#哪一个范畴。
2、 public static implicit operator string(EnumGakunen value) { return value.value_; } public static explicit operator EnumGakunen(string value) { return Convert(value); }
public static implicit operator int(EnumGakunen value) { return Int32.Parse(value.value_); }
public static explicit operator EnumGakunen(int value) { return Convert(value.ToString()); }
上述两行代码怎么解释,应该看c#哪方面的知识来了解。
3、 EnumGakunen.GetName()是怎么取得值的?
4、 各位实现类似功能的时候都是如何写的?
this.SetInfoString((int)HeaderInfoPosition.Gakunen, EnumGakunen.GetName(
this.DTOGakureibo.Gakunen.ToString()), true, MkLabelForeColorStyle.Nomal);(int)HeaderInfoPosition.Gakunen :控件
EnumGakunen.GetName(this.DTOGakureibo.Gakunen.ToString()):显示内容,当然如果我写固定值“程序员”,那么就会直接显示程序员。
其余参数不考虑。以下,是第二个参数EnumGakunen的代码
[EnumDefinition("学年")]
public class EnumGakunen : EnumItemBase<string, EnumGakunen>, IEnumItem
{
protected EnumGakunen(string val, string name) : base(val, name) { }
public static implicit operator string(EnumGakunen value) { return value.value_; }
public static explicit operator EnumGakunen(string value) { return Convert(value); }
public static implicit operator int(EnumGakunen value) { return Int32.Parse(value.value_); }
public static explicit operator EnumGakunen(int value) { return Convert(value.ToString()); }
#endregion #region
public struct cst
{
/// <summary>小学1年</summary>
public const string Sho1 = "1";
/// <summary>小学2年</summary>
public const string Sho2 = "2";
/// <summary>小学3年</summary>
public const string Sho3 = "3";
}
#endregion /// <summary>小学1年(Enum值)</summary>
public readonly static EnumGakunen Sho1 = new EnumGakunen(cst.Sho1, "小学1年");
/// <summary>小学2年(Enum值)</summary>
public readonly static EnumGakunen Sho2 = new EnumGakunen(cst.Sho2, "小学2年");
/// <summary>小学3年(Enum值)</summary>
public readonly static EnumGakunen Sho3 = new EnumGakunen(cst.Sho3, "小学3年");
}
#endregion EnumGakunen我的问题是:
1、 不清楚EnumGakunen为什么要这么写,这部分内容属于C#哪一个范畴。
2、 public static implicit operator string(EnumGakunen value) { return value.value_; } public static explicit operator EnumGakunen(string value) { return Convert(value); }
public static implicit operator int(EnumGakunen value) { return Int32.Parse(value.value_); }
public static explicit operator EnumGakunen(int value) { return Convert(value.ToString()); }
上述两行代码怎么解释,应该看c#哪方面的知识来了解。
3、 EnumGakunen.GetName()是怎么取得值的?
4、 各位实现类似功能的时候都是如何写的?
解决方案 »
- 在DtaGridView中加入TextBox
- C#线程
- dataSet中的字增量关联问题
- LIST 命令是获取FTP文件列表的,但是这里没有文件时间,比如说没有年份
- 求救!请教复杂的数据库排序问题
- 请教!在listBox中显示数据表的内容。
- 如何改变 DateTimePicker 控件的Value值 Windows API
- 在vs2005里面怎样实现类似 #ifdef DEBUG ... #endif
- 使用的方法为:Clipboard.GetDataObject() 我想在类里面使用但是提示为NULL
- 水晶报表简单问题求助!!!急
- Visual Studio调试问题--高手进来
- 有关小弟前途的问题!!!
operator 关键字用于在类或结构声明中声明运算符implicit
implicit 关键字用于声明隐式的用户定义类型转换运算符。
注意:
隐式转换可以通过消除不必要的类型转换来提高源代码的可读性。但是,因为可以在程序员未指定的情况下发生隐式转换,因此必须注意防止令人不愉快的后果。一般情况下,隐式转换运算符应当从不引发异常并且从不丢失信息,以便可以在程序员不知晓的情况下安全使用它们。如果转换运算符不能满足那些条件,则应将其标记为 explicit。 explicit
explicit 关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符。注意:转换运算符将源类型转换为目标类型。源类型提供转换运算符。与隐式转换不同,必须通过强制转换的方式来调用显式转换运算符。如果转换操作可能导致异常或丢失信息,则应将其标记为 explicit。这可以防止编译器无提示地调用可能产生无法预见后果的转换操作。
1、 不清楚EnumGakunen为什么要这么写,这部分内容属于C#哪一个范畴。 //Attribute(特性)2、 public static implicit operator string(EnumGakunen value) { return value.value_; } public static explicit operator EnumGakunen(string value) { return Convert(value); }
public static implicit operator int(EnumGakunen value) { return Int32.Parse(value.value_); }
public static explicit operator EnumGakunen(int value) { return Convert(value.ToString()); }
上述两行代码怎么解释,应该看c#哪方面的知识来了解。 看楼上的解释
3、 EnumGakunen.GetName()是怎么取得值的?
看看你的源程序,应该就知道怎么获得的了4、 各位实现类似功能的时候都是如何写的?
2、 public static implicit operator string(EnumGakunen value) { return value.value_; } public static explicit operator EnumGakunen(string value) { return Convert(value); }
public static implicit operator int(EnumGakunen value) { return Int32.Parse(value.value_); }
public static explicit operator EnumGakunen(int value) { return Convert(value.ToString()); }
此处涉及到的知识点有继承,泛型,可能还有别的,就只认识这两个了。
3、 EnumGakunen.GetName()是怎么取得值的?
他的值就该就是取this.DTOGakureibo.Gakunen的值了。
比如
class a{
public static implicit operator int(a value){....}
public static implicit operator double(a value){....}
}
有这条函数后你就可以这样调用:
a obj = new a();
int b = a;//隐式转换函数被调用.
double c = (double)a;//显式转换函数被调用.至于为甚么EnumGakuen这样写...显然作者是希望把它当作一个枚举类来用,
但又限于enum的值只能为int所以只好把这些实例声明成常量,然后用EnumGakuen
这个类来做归类,这样在VS IDE里也能达到enum的效果,可以看做enum的一种变体,
算是平时常用的手段吧.类似的设计在.net类库里的OpCodes类上也能看到:)
谁能解释的大白话,通俗一些。