新手,C#中方括号是什么意思? C#中的方括号是什么意思??希望能详细讲一下,谢啦!!public class UserControl1: System.Windows.Forms.UserControl { [Category("Appearance")] public ColorMyBackColor{ get {returnthis.BackColor;} set {this.BackColor=value;} }} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://msdn.microsoft.com/en-us/library/aa287992(v=vs.71).aspx 这个准确的说应该成为特性。我们一般用它来描述某个类,或某个属性或方法具备某种特点。好像我现在做的一个项目,需要将C#中的一个结构体封装为一个长整形然后传递给一个api函数。但是这个长整形的每一位都是有特殊意义的,和结构体中每一个成员对应,比如姓名就对应1,性别对应10,年龄对应100,那么我应该怎么将结构成员和这些二进制数联系在一起呢,总不能在程序中写上n个if-else吧。怎么办呢,用特性好了。在这里,我会定义一个特性类,这个类型就一个int属性,属性名:IntValue,我会用它修饰我结构体中的每一个成员public class MyValueAttribute: Attribute{ Int32 IntValue{get; set;} public MyValueAttribute(Int32 val){ this.IntValue = val; }}接下来用这个特性类修饰结构体中的成员public struct Student{ public String SName{get; set;} public String SAge{get; set;} ....}接下来就是如何修饰了,使用特性类的方式很简单,就是在目标(类,方法,属性或字段)上加上中括号,里面可以写上你的特性类的构造函数[code=C#]public struct Student{ [MyValueAttribute(1)] public String SName{get; set;} [MyValueAttribute(2)] public String SAge{get; set;} ....}[/code],现在我使用了特性类,但是,当我构造好了一个结构,那我们该如何获取每个成员上的特性值,并把它累加为api需要的长整形呢,下面是关键点:public struct Student{ [MyValueAttribute(1)] public String SName{get; set;} [MyValueAttribute(2)] public String SAge{get; set;} .... public Int32 Value { get//只读属性 { Int32 sum = 0; Type type = typeof(Student); FieldInfo[] fields = type.GetFields(); foreach(FieldInfo fi in fields) { //获取在成员上一个特性类对象 MyValueAttribute ma = (MyValueAttribute)fi.GetCustomizeAttribute(this , typeof(MyValueAttribute)); sum += ma.IntValue; } return sum; } }}最后说一句,特性其实就是用一个特性类对象去修饰某个目标对象,有了特性类会使得我们的程序变得更加的灵活。另外特性类还有它的修饰范围,是否可以继承等等,这些还需要楼主多多了解。反正,我like it,呵呵 确切的说着是特性,是.net引入一个可以在运行时动态影响程序执行的一个类型,你可以通过继承系统的Attribute类型来自定你自己的特性。这个特性的用途一般是在运行时通过反射拿到特性的信息的,这跟JAVA里的注解相对应。 未能加载文件或程序集 困扰几天的问题 hashtable 问题 C# 2005关于webBrowser的用法.(C#刚学不久,问点菜鸟级的问题) C++的嵌套结构如何转换成c#的语法结构 DataSet项目合并问题 怪了???从表单里提取的变量为什么是乱码呢?? 问一个很菜的问题。 请教如何用c#实现一个功能,能让右键点击资源管理器某个文件时,出现菜单选项卡,类似于装了winrar后,右键某个文件时,出现"添加到压缩文件..." 拿optimizeit5.5 注册码 DataGrid怎能不排序. 点击Button记录次数 C#评语系统怎么做?
好像我现在做的一个项目,需要将C#中的一个结构体封装为一个长整形然后传递给一个api函数。但是这个长整形的每一位都是有特殊意义的,和结构体中每一个成员对应,比如姓名就对应1,性别对应10,年龄对应100,那么我应该怎么将结构成员和这些二进制数联系在一起呢,总不能在程序中写上n个if-else吧。怎么办呢,用特性好了。
在这里,我会定义一个特性类,这个类型就一个int属性,属性名:IntValue,我会用它修饰我结构体中的每一个成员public class MyValueAttribute: Attribute
{
Int32 IntValue{get; set;}
public MyValueAttribute(Int32 val){
this.IntValue = val;
}
}接下来用这个特性类修饰结构体中的成员public struct Student
{
public String SName{get; set;}
public String SAge{get; set;}
....
}接下来就是如何修饰了,使用特性类的方式很简单,就是在目标(类,方法,属性或字段)上加上中括号,里面可以写上你的特性类的构造函数[code=C#]public struct Student
{
[MyValueAttribute(1)]
public String SName{get; set;} [MyValueAttribute(2)]
public String SAge{get; set;}
....
}[/code]
,现在我使用了特性类,但是,当我构造好了一个结构,那我们该如何获取每个成员上的特性值,并把它累加为api需要的长整形呢,下面是关键点:public struct Student
{
[MyValueAttribute(1)]
public String SName{get; set;} [MyValueAttribute(2)]
public String SAge{get; set;}
.... public Int32 Value
{
get//只读属性
{
Int32 sum = 0;
Type type = typeof(Student);
FieldInfo[] fields = type.GetFields();
foreach(FieldInfo fi in fields)
{
//获取在成员上一个特性类对象
MyValueAttribute ma = (MyValueAttribute)fi.GetCustomizeAttribute(this
, typeof(MyValueAttribute));
sum += ma.IntValue;
}
return sum;
}
}
}
最后说一句,特性其实就是用一个特性类对象去修饰某个目标对象,有了特性类会使得我们的程序变得更加的灵活。另外特性类还有它的修饰范围,是否可以继承等等,这些还需要楼主多多了解。反正,我like it,呵呵