一. 将class封装成dll
在vs tools中点击vs command prompt,输入如下命令:
csc /target:library 文件名.cs
注意: 文件路径要正确。
二. 将主文件和dll关联
csc /reference:dll文件名.dll 主文件名.cs
会生成 主文件名.exe 文件, 执行 exe文件,就可以看到运行结果。
三. 值传递和引用传递实例
using System;
namespace Method21
{
class Program
{
static void ValueMethod(int i)
{ i++; }
static void ReferenceMethod(ref int i)
{ i++; }
static void Main(string[] args)
{
int i = 0;
int j = 0;
ValueMethod(i);
ReferenceMethod(ref j);
Console.WriteLine("i={0}",i);
Console.WriteLine("j={0}",j);
Console.ReadKey();
} }}
运行结果:
i=0
j=1
1. 类、对象、接口、继承 实例:
using System; using System.Collections.Generic; using System.Text; namespace _9ex01 { public abstract class MyBase { } internal class MyClass : MyBase { } public interface IMyBaseInterface { } internal interface IMyBaseInterface2 { } internal interface MyInterface : IMyBaseInterface, IMyBaseInterface2 { } internal sealed class MyComplexClass : MyClass, MyInterface { } class Program { static void Main(string[] args) { MyComplexClass myObj = new MyComplexClass(); Console.WriteLine(myObj.ToString()); Console.ReadKey(); } } } |
2. 索引器,数组,函数重载
using System; using System.Collections; using System.Collections.Generic; using System.Text; namespace indexer { class ArrClass { private readonly string name; public ArrClass(String name) { this.name = name; } public string Name { get { return name; } } } class IndexClass { private Hashtable name = new Hashtable(); public string this[int index] { get { return name[index].ToString(); } set { name.Add(index,value); } } public int this[string aName] { get { foreach (DictionaryEntry d in name) { if (d.Value.ToString() == aName) { return Convert.ToInt32(d.Key); } } return -1; } set { name.Add(value, aName); } } } class Program { static void Main(string[] args) { ArrClass[] a = new ArrClass[10]; a[0] = new ArrClass("张三"); a[1] = new ArrClass("李四"); a[2] = new ArrClass("王五"); Console.WriteLine("a[0]=" + a[0].Name); Console.WriteLine("a[1]=" + a[1].Name); Console.WriteLine("a[2]=" + a[2].Name); Console.WriteLine(); IndexClass b = new IndexClass(); b[500] = "张三"; b[300] = "李四"; b[400] = "王五"; Console.WriteLine("b[500] = " + b["张三"]); Console.WriteLine("b[300] = " + b["李四"]); Console.WriteLine("b[400] = " + b["王五"]); b[600] = "李五"; b[700] = "王六"; Console.WriteLine("b[600] = " + b[600]); Console.WriteLine("b[700] = " + b[700]); Console.ReadKey(); } } }
|
3. 委托,委托链
静态方法: using System; using System.Collections.Generic; using System.Text; namespace delegate1 { delegate void EatDelegate(string food); class Mydelegate { static void zsEat(string food) { Console.WriteLine("张三吃 " + food); } static void lsEat(string food) { Console.WriteLine("李四吃 " + food); } static void wwEat(string food) { Console.WriteLine("王五吃 " + food); } static void Main() { EatDelegate zs = new EatDelegate(zsEat); EatDelegate ls = new EatDelegate(lsEat); EatDelegate ww = new EatDelegate(wwEat); //zs("西瓜"); EatDelegate eatChain; Console.WriteLine("张三,李四,王五 开party"); eatChain = zs + ls + ww; eatChain("西瓜"); Console.WriteLine(); Console.WriteLine("张三 有事离开。"); eatChain -= zs; eatChain("桃子"); Console.WriteLine(); Console.WriteLine("张三 回来了。"); eatChain += zs; eatChain("西瓜"); Console.ReadKey(); } } } 动态方法: using System; using System.Collections.Generic; using System.Text; namespace delegate1 { delegate void EatDelegate(string food); class Man { private string name; public Man(string name) { this.name=name; } public void eat(string food) { Console.WriteLine(name+" 吃 "+food); } } class Program { static void Main(string[] args) { Man ZS=new Man("张三"); Man LS=new Man("李四"); Man WW=new Man("王五"); EatDelegate zs = new EatDelegate(ZS.eat); EatDelegate ls = new EatDelegate(LS.eat); EatDelegate ww = new EatDelegate(WW.eat); EatDelegate eatChain; Console.WriteLine("张三,李四,王五 开party"); eatChain = zs + ls + ww; eatChain("西瓜"); Console.WriteLine(); Console.WriteLine("张三 有事离开。"); eatChain -= zs; eatChain("桃子"); Console.WriteLine(); Console.WriteLine("张三 回来了。"); eatChain += zs; eatChain("西瓜"); Console.ReadKey(); } } } |
4. 委托,事件
using System; using System.Collections.Generic; using System.Text; namespace @event01 { class Publisher { public delegate void PubComputer(string magazineName); public delegate void PubLife(string magazineName); public event PubComputer onPubComputer; public event PubLife onPubLife; public void issueComputer() { if (onPubComputer != null) { Console.WriteLine("发行<电脑>杂志"); onPubComputer("电脑杂志"); } } public void issueLife() { if (onPubLife != null) { Console.WriteLine("发行<生活>杂志"); onPubLife("生活杂志"); } } } class Subcriber { private string name; public Subcriber(string name) { this.name = name; } public void Receive(string magazineName) { Console.WriteLine(name+"订阅者已经收到了"+magazineName); } } class Program { static void Main() { Publisher Pub = new Publisher(); Subcriber zs = new Subcriber("张三"); Pub.onPubComputer += new Publisher.PubComputer(zs.Receive); Subcriber ls = new Subcriber("李四"); Pub.onPubComputer += new Publisher.PubComputer(ls.Receive); Pub.onPubLife += new Publisher.PubLife(ls.Receive); Pub.issueComputer(); Pub.issueLife(); Console.WriteLine(); Console.WriteLine("1 year later:"); Pub.onPubComputer -= new Publisher.PubComputer(ls.Receive); Pub.issueComputer(); Pub.issueLife(); Console.ReadKey(); } } } |
5. 虚方法,多态,继承
using System; using System.Collections.Generic; using System.Text; namespace virtual2 { class Employee { protected string _Name; public Employee() { } public Employee(string name) { _Name = name; } public virtual void StartWork() { Console.WriteLine(_Name+"开始工作: "); } } class Manager : Employee { public Manager(string name) : base(name) { } public override void StartWork() { base.StartWork(); Console.WriteLine("给员工下达任务"); } } class Secretary : Employee { public Secretary(string name) : base(name) { } public override void StartWork() { base.StartWork(); Console.WriteLine("协助经历工作"); } } class Seller : Employee { public Seller(string name) : base(name) { } public override void StartWork() { base.StartWork(); Console.WriteLine("销售产品"); } } class Accountant : Employee { public Accountant(string name) : base(name) { } public override void StartWork() { base.StartWork(); Console.WriteLine("管理公司财政"); } } class Program { static void Main(string[] args) { Employee[] emp = new Employee[5]; emp[0]=new Manager("张三 经理 "); emp[1]=new Secretary("李奇 秘书 "); emp[2]=new Seller("王五 销售人员 "); emp[3] = new Seller("钱六 销售人员 "); emp[4]=new Accountant("赵四 财务人员 "); foreach (Employee e in emp) { e.StartWork(); } Console.ReadKey(); } } } |
6. 类型转换
例子一 |
using System; using System.Collections.Generic; using System.Text; namespace convert21 { class Fruit { } class Apple : Fruit { public int i=1; } class Program { static void Main(string[] args) { Fruit f = new Apple(); Apple a = f as Apple; if (a!=null) { Console.WriteLine(a.i); } Console.ReadKey(); } } } |
例子二(部分代码) |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace convert22 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button3_Click(object sender, EventArgs e) { foreach (Control c in this.Controls) { listBox1.Items.Add(c.Name); Control c1 = c as Button; if (c1 != null) { c1.Text = "按钮"; } } } } } |
7. IComparable, IComparer,类型实现多种排序应用
代码示例: |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace IComparable01 { class Student:IComparable { private string _name; private int _age; public Student(string name, int age) { _name = name; _age = age; } public string Name { get { return _name; } set { _name = value; } } public int Age { get { return _age; } set { _age = value; } } int IComparable.CompareTo(object right) { if (!(right is Student)) { throw new ArgumentException("Argument type must be Student."); } return _name.CompareTo(((Student)right)._name); } public int CompareTo(Student right) { return _age.CompareTo(right._age); } private static AgeComparer _ageCom = null; public static IComparer AgeCom { get { if (_ageCom == null) { _ageCom = new AgeComparer(); } return _ageCom; } } private class AgeComparer : IComparer { int IComparer.Compare(object left,object right) { if (!(left is Student) || !(right is Student)) { throw new ArgumentException("Argument type must be Student."); } return ((Student)left)._age.CompareTo(((Student)right)._age); } } public override string ToString() { return _name; } } class Program { static void Main(string[] args) { Student[] arr = new Student[5]; arr[0] = new Student("Cheers Li", 28); arr[1] = new Student("Huichang Lee", 30); arr[2] = new Student("Linxiang Zhao", 29); arr[3] = new Student("Ming zhang", 27); arr[4] = new Student("Guohai Gu", 31); Console.WriteLine("...Sorted by name..."); Array.Sort(arr); foreach(Student i in arr) { Console.WriteLine(i+" "+i.Age); } Console.WriteLine("...Sorted by age..."); Array.Sort(arr,Student.AgeCom); foreach (Student i in arr) { Console.WriteLine(i + " " + i.Age); } Console.ReadKey(); } } } |