1、命名空间在using System.Collections;
2、拆箱:将引用类型转为值类型
装箱:将值类型转换为引用类型;
拆箱与装箱的两种类型必须具有继承关系。
引用类型:object、string、数组、interface、集合、自定义类 (堆)
ref:将值传递改为引用传递。
引用传递的地址变化举例:
public class Teacher
{
// string _name;
public string Name
{
get;
set;
}
}
Teacher te = new Teacher(); // 在堆中开辟了空间存放Teacher类,包括其中的值。名字te放在栈中,存放的是空间中的地址;
te.Name = "teach";
Teacher st = te; //将堆中空间的地址赋值给栈中st,指向同一块堆的空间。
st.Name = "study"; // 堆中对应的数据发送改变
3、集合操作
一般不用ArrayList 与Hashtable ,因为这两个集合没有指定的类型。
ArrayList arry = new ArrayList();// 存放的类型object,都可以放入值
arry.Add("hello");
string [] strnu={"he","llo","ok"};
arry.AddRange(strnu);
Hashtablehas=new Hashtable ();// 存放的key,value,都是object类型
has.Add(1,3);
has.Add('A',"OK");
has.Add(2,34.79);
List<int> lis = new List<int>();
lis.Add(1);// 添加单个元素
lis.Add(2);
lis.AddRange(new int[]{ 1,2,3,4});// 添加集合
int[] in1=new int[]{1,2,3,2,7};
lis.Remove(1);//移除
lis.AddRange(in1);
lis.RemoveRange(1,3);//移除集合,移除一定范围的 如:从第一个开始移除3个
lis.Insert(3,100);
lis.InsertRange(6,in1);//插入,用法:在指定的位置插入
bool b = lis.Contains(3);
Dictionary <int ,string > dic=new Dictionary<int ,string >();
dic.Add (1,"hello");
dic[2]="这样添加,即使键重复了,也不会抛异常";
dic.Add (0,"若键重复,会抛异常");
// lis.RemoveAll();// 移除与指定的条件相符合的
// 两种遍历方式 dictory<key,value >
foreach (KeyValuePair <int,string > item in dic )
{
Console.WriteLine (item.Value );
}
foreach (var item in dic.Keys )
{
Console.WriteLine(dic[item]);
}
4、区分数组中的奇数偶数,分别放在数组中;
void GetOddEven(int[] num,string Odd,string Even)
{
List<int > lis1=new List<int>();
List<int > lis2=new List <int>();
for(int i=0;i<num.Length ;i++){
if(num[i]%2==0){
lis1.Add (num[i]);
}
else
lis2.Add (num[i]);
}
Odd = lis1.ToString();
Even = lis2.ToString();
}
将集合转换为数组
5、int [] nn= lis1.ToArray(); //将集合转换为数组
6、集合初始化器
集合的两种赋值方式:
List<int> lis1 = new List<int> { 1,2,3,4,56,6,32};
lis1.AddRange(new int[] { 1, 2, 3, 4, 56, 6, 32 });
也可以用这种方式给类赋值,一个类Teaher,其中有属性Name,Age,Hour
Teaher te = new Teaher() { Name = "vv", Age = 12, Hour = 12 };
7、遇到某些字符转换到两一个字符的处理方法 123---一二三
Dictionary<char, char> dic = new Dictionary<char, char>();
string st = "1一 2二 3三 4四 5五 6六 7七 8八";
string[] strnew = st.Split( new char[] {' '},StringSplitOptions .RemoveEmptyEntries );
for (int i = 0; i < strnew.Length;i++ )
{
dic.Add(strnew[i][0],strnew[i][1]);
}
string str = "1245533656";
char [ ] ch=str.ToCharArray ();
List<char> lis=new List<char> ();
for (int i = 0; i < ch.Length; i++)
{
if (dic.ContainsKey(ch[i]))
{
lis.Add(dic[ch[i]]);
}
else
lis.Add(ch[i]);
}
foreach (var item in lis)
{
Console.WriteLine(item);
}
// 统计字符出现的次数
Dictionary<char, int> dic = new Dictionary<char, int>();
string str="12234567783425";
for (int i = 0; i < str.Length;i++ )
{
if (dic.ContainsKey(str[i]))
{
dic[str[i]]++;
}
else
dic[str[i]] = 1;
}
foreach (KeyValuePair<char,int> item in dic )
{
Console.WriteLine("{0}----{1}",dic.Keys ,dic.Values );//这里写错了,不是dic,打印出来是命名空间
Console.WriteLine("{0}----{1}",item.Key ,item.Value ); //正确的
}