求集合元素总和
int sum = 0;
ArrayList arraylist = new ArrayList ();
for (int i=0;i<=100;i++)
{
arraylist.Add(i);
}
for (int i=0;i<arraylist .Count;i++)
{
if (arraylist[i] is int)
{
sum += (int)arraylist[i];
}
}
Console.WriteLine(sum);
Console.ReadKey();
求随机产生数字总和
ArrayList arraylist = new ArrayList ();
Random r = new Random();
///随机输出十个不相同的数
while (arraylist.Count !=10)
{
int num = r.Next(1, 100);
if (!arraylist.Contains (num))
{
arraylist.Add(num);
}
}
///对随机的十个数进行求和
int sum = 0;
for(int i=0;i<arraylist .Count;i++)
{
if (arraylist [i]is int)
{
sum += (int)arraylist[i];
}
Console.WriteLine(arraylist[i]);
}
Console.WriteLine(sum);
Console.ReadKey();
哈希表简介
Hashtable ht = new Hashtable();
///对比下面的几项内容不难发现,对应两个值一个第一个表示键,第二个表示值
///哈希表是以键值的形式存储,并且存储的数据类型为object
ht.Add(534, "sdsf");
ht.Add("小赵", "324");
ht.Add("sdf", "小赵");
foreach ( object str in ht.Keys ) // foreach 表示循环
{
Console.WriteLine("key{0}, value{1}", str, ht[str]);
}
Console.WriteLine("添加成功了");
Console.ReadKey();
file 方法创建文件,删除文件,检查文件是否存在,移动文件
using System.IO; //利用 file 方法必须先导入命名空间
namespace ConsoleApp39
{
class Program
{
static void Main(string[] args)
{
File.Create(@"C:\Users\崔\桌面\文档.rtf"); //在指定路径下创建一个文件,如果文件存在则覆盖该文件
Console.WriteLine("恭喜您,覆盖成功!"); //覆盖成功提示内容
//File.Delete(@"C:\Users\崔\桌面\文档.rtf");//删除指定路径下的文件,直接删除,回收站没有
//File.Exists (@"C:\Users\崔\桌面\文档.rtf");//判断文件是否存在
//File.Move(原文件位置,转换到地址); //把文件移动到指定的路径下,可以改名,如果那个文件路径下有这个文件,会报异常
//File.Copy(原文件位置,复制到到地址);//把文件移动到指定的路径下,如果路径下有这个文件夹 后报异常
//如果复制文件的时候另外一个路径中有这个文件了,名字相同,会报异常,可以利用这个方法重载,在第三个参数的位置上协商true,就可以覆盖那个重名的文件/File.Copy(原文件位置,复制到到地址,true);
Console.ReadKey();
}
}
}
在指定路径下创建和删除文件夹
string path = @"C:\Users\崔\桌面\1";
Directory.CreateDirectory(path);//在指定路径下创建一个文件夹,如果文件夹内有东西在创建不报异常
// Directory.Delete(path, true);//删除指定路径下的文件夹,如果文件夹内有东西,可以采用第二个重载(地址路径, true),就不会报异常
// bool result = Directory.Exists(path);//判断路径下是否存在文件夹
//string[] dir = Directory.GetDirectories(path);//获取指定路径下的所有文件夹的全路径
// string[] file = Directory.GetFiles(path);//获取这个文件夹下面所有文件的路径
Console.WriteLine("创建成功");
Console.ReadKey();
子类的方法名可以和父类的方法名重名,但是会出现一条绿线
解决方法:(1)子类方法的修饰符后加New,无论是否加New都不影响使用
(2)在父类的方法的修饰符后加virtual(虚拟的),在子类中重写父类的方法,加上一个override(覆盖)
抽象方法的使用:
(1)抽象方法没有方法体
(2)抽象成员只能在抽象类中
(3)抽象类可以有非抽象成员
(4)抽象类的派生类必须实现抽象方法体
(5)抽象类只能用作基类,无法实现实例化
重载和重写的区别
重载是两个相同的方法的名称,但是其中的参数不同,进行的多次重载是为了满足不同的需要,重载是面向过程的概念
重写是进行基类中函数的重写,重写是面向对象的概念。
C#中接口和类的异同
(1)不能直接实例化接口
(2)接口不包含方法的实现
(3)接口可以多继承,类只能单继承
(4)类定义可在不同的源文件之间进行拆分
相同:
接口,类和结构都可以从多个接口继承
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员
接口和类都可以包含事件,索引器,方法和属性
类之间不支持多重继承,接口之间支持多重继承,类对接口叫做实现不能叫继承,能有多个接口但不能有多个类。
装箱和拆箱
//装箱 将Int类型的值转换成object
//int num = 10;
//object Num = num;
//Console.WriteLine(Num);
//Console.ReadKey();
//拆箱 将object类型的值转换成 int
int num = 10;
object Num = num;
int number= (int)Num;
Console.WriteLine(number);
Console.ReadKey();
序列化
//引入命名空间
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
//序列化一个类
[Serializable] //注意在类之前需要加上中括号中的内容
public class person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
//主程序
static void Main(string[] args)
{
person p = new person(); //实例化person类
p.Name = "春春";
string path = @"C:\Users\崔\桌面\文档.rtf";
using (FileStream fs= new FileStream(path,FileMode.Open,FileAccess.Write,FileShare.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, p);
}
Console.WriteLine("序列化完毕");
Console.ReadKey();
}
反序列化
//引入命名空间
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
//序列化一个类
[Serializable] //注意在类之前需要加上中括号中的内容
public class person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
static void Main(string[] args)
{
person p;
string path = @"C:\Users\崔\桌面\文档.rtf";
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read , FileShare.Read ))
{
BinaryFormatter bf = new BinaryFormatter();
p = (person)bf.Deserialize(fs);
}
Console.WriteLine(p.Name);
Console.WriteLine("反序列化完毕");
Console.ReadKey();
;
}