zoukankan      html  css  js  c++  java
  • C#初级知识点整理及VS的简单使用

    C#预处理器指令
    #define #undef 声明一个不需赋值的变量
    注意的一点事它必须放到using 上面,如

    #define TEST
    using System.xxx;
    public class Task
    {
        public Task()
        {
        }
    }

    #region #endregion
    这是一组用来帮助管理代码布局的指令

    #if #else #elif #endif
    if else 没什么好说的。不过这个一般要跟#define搭配使用

    #warn #error
    输出警告或错误

    #if DEBUG

    #endif

    这个比较有用,指定了一个只在调试的时候才执行的代码块,发布的时候会被自动删除

    当然 这些功能都可以用一组快捷键来实现:  CTRL + K ,CTRL + S

    选中一段代码然后使用这组快捷键就可以


    ref参数

    当把一个参数传给一个方法的时候,如果这个参数是传送的值,那么无论在方法中它被如何更改都不会影响方法外的原值;但如果加上ref的话,这个值就会被作为引用传递

    static void Reset(ref int b)
    {
        b = 1;
    }
    
    static void Main(string[] args)
    {
        int n = 0;
        Reset(ref n);
    }

    注意的是,定义和使用方法的时候,形参和实参前都要加ref


    可选参数

    有的时候某些参数是可选的,并且有默认值。(有点像重载)

    static void Reset(int b,int c = 2,int d=3)
    {
        Console.WriteLine("n:{0}", b+c+d);
    }
    
    static void Main(string[] args)
    {
        Reset(1);
    }

    但要注意的是可选参数必须放到最后定义。下面这样是不对的

    static void Reset(int c = 2,int d=3,int b)
    {
        Console.WriteLine("n:{0}", b+c+d);
    }

    调用的时候 是按顺序赋值。

    Reset(119);//给b赋值
    Reset(119,5);//给b,c赋值
    Reset(119,5,7);//给b,c,d赋值

    但如果不想按顺序赋值,或者有些参数不想赋值则可以用以下方式调用

    Reset(110,d:5);//给b,d赋值

     属性的概念

    public class Person
    {
        private string name;
        
        public string Name
        {
            set
            {
                name = value;
            }
            get
            {
                return name;
            }
        }
    }

    如果不添加set访问器的话,就成了只读属性。(相应的也有只写属性)

    public class Person
    {
        private string name;
        public string Name
        {
            get
            {
                return name;
            }
        }
    }

    这还有种简单的写法

    public class Person
    {
        public string Name{set;get;}
    }

    但这种自动实现的属性必须有两个访问器。否则会出错,如下面这样

    public class Person
    {
        public string Name{get;}
    }

    如果想设置只读的话,可以通过改变访问权限的方式实现:

    public class Person
    {
        public string Name
        {
            private set;
            get;
        }
    }

     继承

     ①在C#中 子类调用父类要用base,

    public class Student:Person
    {
        public override void ShowName()
        {
            base.ShowName();
        }
    }

    这就如同Java中的super一样。

    ②对于父类的方法,如果想将来可以被覆盖的话,必须显式的将函数声明为virtual,而子类覆盖该方法的时候也必须声明为override。这是因为在C#中方法默认都是虚方法。这跟Java是截然不同的。

    ③抽象类

    如果某个类是抽象的话,那么该类中的方法也都必须是抽象的;相反,如果某个方法是抽象的话,该类也必须是抽象类。

    这个抽象关键字与Java中相同,都是abstract。注意的是抽象方法声明为abstract而不能加virtual

    ④密封类

    将类声明为sealed意味着该类无法被其他类所继承。这个的用处参照类string

    ⑤关键字internal

    带有internal的类或属性方法只有在同一个程序集(命名空间)下的程序才能获得,等同于Java下的default


    VS2010中比较有用的快捷键

    • 定位搜索

    编辑(Edit)菜单中选择“Navigate To”(定位到) 或者通过Ctrl+, 打开定位搜索窗口。在搜索栏(模糊查询的功能很强)中输入查询内容,VS2010 将列出相关结果信息。

    双击搜索结果可到达代码位置。

    • 调用层次结构

    在方法、属性、构造函数上点击鼠标右键可查看调用层次结构,如果是刚接手的项目就可以用这个方法了解其相关程序结构。

    • 查看引用情况

     Ctrl + K + R 可查看方法、属性、构造函数的引用情况,代码重构和了解代码结构的利器


    VS的WCF测试工具

    路径 Microsoft Visual Studio XX.0Common7IDEWcfTestClient.exe

    还有一个第三方的服务测试工具 SoapUI 用法类似


    页面错误事件监听

     网页出错误再说难免,后台错误处理不够谨慎,数据格式判断不够全面,都有可能出现。但是这些东西不能让用户看到,即使是拿个委婉点的Sorry Page来糊弄也可以。

    为了解决这个问题,我们可以覆盖Page的OnError事件(当后台处错误的时候都会进入该事件),并作出相应处理 一般是跳转到某个指定页面

    protected override void OnError(EventArgs e)
    {
        Response.Redirect("Sorry.htm");
    }

  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/TiestoRay/p/3395383.html
Copyright © 2011-2022 走看看