C# .Net 实例积累

一. 将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();          
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值