C#基础完成和深入

 

以下都是一些在学习视频时的杂记,还有一些练习的代码,需要记住的注意事项等等,比较乱,呵呵,因为都是手打

枚举

枚举:自定义了一种类型,并且在定义这种类型是,我们要指定这个类型的所有值

语法:

enum 自己起的类型名称{1,2,3....n};

枚举的定义,一般和类定义在同一个级别,这样,在这个命名空间下的所有类都可以调用这个枚举.

enum Gender{}

....

Gender sex = Gender.;

注意:定义枚举是,值不能使int类型

,枚举类型的变量都可以强制转换为int类型

如何把一个字符串转换成枚举类型

try

{

(Gender)(Enum.Parse(typeof(Gender),"待转换的字符串"));

}

catch{}

结构

结构到C#,就变得特别变态,方法,枚举,变量,各种

结构体也是一种类型,结构中的类型必须是public类型 

访问修饰符 struct 结构名

{

定义结构成员

}

结构体和类的差别

单一使用,没太大区别,当数量上来后

结构体定义后可以直接调用,复制

类需要对每一个对象实例化,这样才可以使用,效率有差别

console.clear();//清屏

 

冒泡排序

int[] scores = { 18, 34, 45, 56, 67, 8, 32, 54, 65, 76, 33, 22, 66, 11 };

        for (int i = 0; i < scores.Length - 1; i++)
        {

            for (int j = 0; j < scores.Length - 1 - i; j++)
            {

                if (scores[j] > scores[j + 1])
                {

                    int temp = scores[j];

                    scores[j] = scores[j + 1];

                    scores[j + 1] = temp;

                }

            }

        }

 


 

32.方法

[访问修饰符] [static]返回值类型 方法名([参数])

{

方法体;

}

方法名命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义

方法的调用:对于静态方法,如果在一个类中,直接写名字调用就行了.

方法一般定义在类中,如果是静态方法,类名加.方法名().

reflector反编译代码

33.利用参数的返回值

int result = Test(out number);

static int Test(out a)

{

a = 20;

return 20;

}

out是一个修饰符,在方法中必须在使用前赋值;

bool int.TryParse(string s, out int result); //先判断是否可以转换,可以转换再转换,结果存到result

ref是双向

 

 

.net加深学习 

尽量不用public字段,无法进行非法值的判断,用private

private int age;

    public int Age //不存数据
    {

        set
        {

            if (value < 0)//非法判断

                return;

            this.age = value;

        }

        get
        {

            return this.age;

        }



    }


 

疑问:form里面不用static用public就可以跨函数调用,而命令台必须static才可以全局调用,为什么?
答:    静态类调用的必须是静态类,命令台的main()是静态方法,因此在main()里面调用的方法必须是静态定义

 

 

.net3.0后简写的代码块

class person7
{

    public int Age
    {

        get;//编译器自动帮我们生成私有字段和set/get

        set;

    }

    public string Name
    {

        get;

        set;

    }

}


 

反编译器

Red Gates .net reflector

exe反编译器成

 

HTML

主要的标签有:pbrdivfontainputimglitableselecttextareaspan。学习HTML的时候一定要坚持手写HTML,千万不要用VisualStudioDreamweaver等中的可视化的拖放方式来编写HTML页面,如果只会在设计器可视化拖出HTML页面的话,后面的学习会困难重重。HTML学习的一个目标就是能够完全手写一个很多网站都有的那种静态注册页面出来。

 

//int,datatime,bool,char等类型是值类型

//普通的对象则是引用类型,复制的时候是传递引用的

//因为普通的对象里面包含的可能是很多东西,如果直接复制,必将造成太大的负荷

//函数之间也是引用传递的

 

int i =10;

int j=i;

i++;//j不变

 

 

class Num

{

  public int Age{get; set;}

}

....

Num n1 = new Num();

p1.Age = 10;

Num n2 = n1;

Console.WriteLine(n2.Age); //结果也是10

 

构造函数的学习:

可以重载,参数不一样

 

继承:

子类继承父类,修改父类属性,所有的会具有

父类可以指向子类,引用类型

 

object类是所有类的积累,object指向什么都可以,没有指定父类那么父类就是objec

 

try 

catch(Exception ex)

{

    ex.StackTrace    ex.Message;

}

throw new Exception("信息");//抛出异常

一般情况下不需要处理异常

 

关于Static,在Static成员中不能直接调用非static成员

在非static成员中可以调用static成员

static相当于全局变量,本类可以调用,其他类也可以调用,不用实例化就可以调用

静态类不能被实例化,一般方法这么定义,一般用来实现函数库,SqlHelper***Helpler

 

命名空间

找不到using的话,可以点击右键解析

 

索引器

 

class person
{
    private string FirstName = "大毛";
    private string SecondName = "二毛";
    public string this[string name, int x, int y]
    {
        get
        {
            return name + x + y;
        }

    }
    public string this[int index]
    {
        set
        {
            if (index == 1)
            {
                FirstName = value;
            }
            else if (index == 2)
            {
                SecondName = value;
            }
            else
            {
                throw new Exception("错误的序列号");
            }

        }
        get
        {
            if (index == 1)
            {
                return FirstName;
            }
            else if (index == 2)
            {
                return SecondName;
            }
            else
            {
                throw new Exception("错误的序列号");
            }
        }
    }
}

 

 

posted @ 2013-01-14 20:26  朱京辉  阅读(151)  评论(0编辑  收藏  举报