C#基础

一、枚举

  public enum MyWeekofDay
        {
            Sunday = 7,
            Monday = 1,
            Tuesday = 2,
            Wednesday=3,
            Thursday=4,
            Friday=5,
            Saturday=6
        }

调用:

 Console.WriteLine(TestC.MyWeekofDay.Friday);
 Console.WriteLine(TestC.MyWeekofDay.Monday);

int xu = (int)TestC.MyWeekofDay.Saturday;

Console.WriteLine(xu.ToString());
 

输出:

Friday

Monday

6

参考网站:http://www.cnblogs.com/liyingyi/archive/2005/12/28/306772.aspx

二、结构类型

 public struct PhoneBook
        {
            public string name;
            public string phone;
           // public string address;
             public struct address
            {
              public string city;
              public string street;
              public uint no;
            }
  
        }

调用:

 for (int i = 1; i < 6; i++)
            {
                TestC.PhoneBook ph = new TestC.PhoneBook();
                TestC.PhoneBook.address add = new TestC.PhoneBook.address();
                add.city = "广州"+string.Format("我是第{0}个城市",i);
                add.street = "林和西";
                add.no = 36;
                ph.name = "张大";
                ph.phone = "15889965878";
                Console.WriteLine(add.city);
            }

输出:

广州我是第1个城市

广州我是第2个城市

广州我是第3个城市

广州我是第4个城市

广州我是第5个城市

using System;
struct STPointX
{
     private int x;
     public int X
     {
          get 
          {
               return x;
          }
          set 
          {
               x=value;
          }
     }
}

class CLPointX
{
     private int x;
     public int X
     {
          get 
          {
               return x;
          }
          set 
          {
               x=value;
          }
     } 
}

class TestClass
{
     public static void structP(STPointX s)
     {
          s.X = 5;
     }
     public static void classP(CLPointX c)
     {
          c.X = 5;
     }

     public static void Main()
     {
          STPointX a = new STPointX() ;
          CLPointX b = new CLPointX();
          a.X = 1;
          b.X = 1;   
          structP(a);  //传递实例的副本
          classP(b);   //传递实例的引用
          Console.WriteLine("a.x = {0}", a.X);//1
          Console.WriteLine("b.x = {0}", b.X);//5
     }
}

  

三、接口和抽象类总结一览表

 

关键字

接口

抽象类

(本表只为个人查阅之用,表中可能存在的错误、不准确之处谢谢指正)

最后更新:2011-10-26    作者:Ronli

更新链接:http://www.cnblogs.com/ronli/archive/2011/10/26/2224654.html

不同点

1

 继承

接口支持多继承

抽象类不能实现多继承

2

 抽象

接口只能定义抽象规则

抽象类既可以定义规则,还可能提供已实现的成员。但不能使用new关键字,也不能被密封,原因是抽象类不能被实例化

 3

 概念

接口是一组行为规范

抽象类是一个不完全的类,着重族的概念

 4

 回调

接口可以用于支持回调

抽象类不能实现回调,因为继承不支持

 5

 成员

接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法

抽象类可以定义字段、属性、包含有实现的方法

 数据类型

接口可以作用于值类型和引用类型。例如,Struct就可以继承接口,而不能继承类

抽象类只能作用于引用类型

规则与场合

1

面向对象思想最重要的原则

面向接口编程

2

设计模式精髓

面向抽象编程

3

主要应用

为不相关的类提供通用功能

关系密切的对象

4

关系类型

CAN-DO关系类型

IS-A关系类型

5

定义对象

定义对象的行为

定义对象的属性

6

可用修饰符

都可以使用public、protected、internal 和private修饰符

7

默认修饰符

public

private

8

更新

接口不变。接口一旦创建就不能更改,如果需要接口的新版本,必须创建一个全新的接口

易控制组件版本,更新基类,所有继承类都随更改自动更新

9

功能设计

设计小而简练的功能块

设计大的功能单元

10

命名约定

大写字母“I”开头

11

组件版本问题

接口中添加新成员则会强制要求修改所有派生类,并重新编译

更新基类,所有继承类都随更改自动更新

12

继承要求

必须实现所有接口方法

从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现

13

定义要求

只能定义抽象规则

既可以定义规则,还可能提供已实现的成员。但不能使用new关键字,也不能被密封,原因是抽象类不能被实例化

14

抽象方法声明

默认为public

不能使用 static 或 virtual 修饰符

约束:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace dazilianxi
{
    //约束既可以定义在类上面,也可以定义在方法上
   public class SortHelper<T> where T:IComparable
    {
       public void BubbleSort(T[] array)
       {
           int length = array.Length;
           for (int i = 0; i <= length - 2;i++ )
           {
               for (int j = length - 1; j >= 1;j-- )
               {
                   if(array[j].CompareTo(array[j-1])<0)
                   {
                       T temp = array[j];
                       array[j] = array[j - 1];
                       array[j - 1] = temp;
                   }
               }
           }
       }
       public void BubbleSort<T2>(T[] array) where T2 : IComparable
       {
           int length = array.Length;
           for (int i = 0; i <= length - 2; i++)
           {
               for (int j = length - 1; j >= 1; j--)
               {
                   if (array[j].CompareTo(array[j - 1]) < 0)
                   {
                       T temp = array[j];
                       array[j] = array[j - 1];
                       array[j - 1] = temp;
                   }
               }
           }
       }
    }
}
原文地址:https://www.cnblogs.com/annabook/p/4773305.html