IsSpecialName特性及其他问题【转】

请求两个c#问题,

2012-05-14 18:39 提问者悬赏:100分 | 空城at | 分类:C#/.NET | 浏览98次
问题1:
enum Number//定义一个数字枚举
{
one,two,three,four
}
然后我将这个枚举Number转换为List
IList<string> list = new List<string>();//一个IList列表
Type type = typeof(Number);//得到Number的Type类型
FieldInfo[] fi = type.GetFields();//得到枚举Number的所有字段信息
foreach (FieldInfo f in fi)//遍历字段信息得到每个字段信息
{
////////////////////////////--------------1------------///////////////////////////////
list.Add(f.Name + " " + f.GetRawConstantValue().ToString());
}
就这样就老是输出value__ ….
One…….
Two……..
Three………
Four…….
多了个value__,然后我在地方1加上
if (f.IsSpecialName)
{
continue;
}
就没有value__了
看IL代码会发现这个value__是叫 specialname,那这个specialname是干什么的呢?这不是闲着吗,多加个字段干嘛?

问题2:
FileStream fs = new FileStream("D:\\1.mp3", FileMode.Open, FileAccess.ReadWrite);//定义一个MP3的读写流
byte[] b = new byte[10];
int count = 0;
while ((count = fs.Read(b, 0, b.Length)) != 0)
{
for (int i = 0; i < count; i++)
{
b[i] = (byte)(255 - b[i]);//简单加下密
}
fs.Position = fs.Position - count;
fs.Write(b, 0, count);

}
fs.Dispose();
运行一次,就加密了,再运行一次就解密了
这是我写的MP3加密解密 ,请问用多线程咋实现呢,我老是没写出???????

问题3
使用集合初始化器初始化我自定义的一个类
class Person:IEnumerable<object>
{
public int age;
public string name;
.........
.............
public void Add(object o)
{
if(o is int){ age = (int)o;}
if(o is string){ name = o.ToString()}

}
main:
Person p = new Person(){20,"tom"};
现在是只有一个int,string我用上面的实现的,但是要是有几个int,string呢
我是这么做的
public static int i=0;
public void Add(object o)
{
Type t = this.GetType();
FieldInfo[] fis = t.GetFields();
fis[i++].SetValue(this,(在这里怎么得到字段的类型进行强转呢????)o);
咋实现呢??????????
}

}
网友采纳
2012-05-15 08:48
1、遍历枚举除了你用的,也可以用这种方式
foreach (string s in Enum.GetNames(type))
list.Add(string.Format("{0} {1}", s, Enum.Format(type, Enum.Parse(type, s), "d")));

2、将你这段代码写入一个void方法,比如private void EncryptMusic,然后
Thread ck = new Thread(new ThreadStart(EncryptMusic));
ck.IsBackground = true;//将线程作为后台线程处理,用途,当主线程关闭,子线程随着关闭
ck.Start(); //启动
while (ck.IsAlive) { Application.DoEvents(); } //等待完成
追问
第二个我是想不用FileAccess.ReadWrite,将其分开为2个流,read,write来用线程实现,怎么线程控制

还有第三题,帮我看一下。谢谢了!
原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3121129.html