温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

【C#冷知识系列】(二)关于变量和类型的冷知识

发布时间:2020-07-05 02:42:33 来源:网络 阅读:329 作者:Charles吴 栏目:编程语言

介绍

从本文开始我们就要进入C#冷知识的学习啦,在此过程中,我们将由易到难的介绍C#的各种冷知识,都是我总结的满满的干货,希望你们看得开心,同时有任何问题都可以留言与我交流,那么就开始吧!

变量的初始化语法

  1. 在字段中,可以不显式的初始化变量,会自动给默认值

  2. 在方法中,不显式初始化的变量直接用就会报错。

private static int i;
public static void run()
{
    int j;
    //可以这么写
    Console.WriteLine("未初始化的字段:" + i.ToString());
    //下面的写法直接会报错,编译不通过
    //Console.WriteLine("未初始化的变量:" + j.ToString());
}

关于强制类型转换

使用括号的强制类型转换如果出错会抛出异常,推荐使用is as进行类型的判断和转换。

double类型的不常用值

  1. double.PositiveInfinity     正无穷

  2. double.NegativeInfinity     负无穷

  3. double.NaN    非数值类型(在WPF中标识Auto)

巧记引用类型和值类型

区分这两个可以不用死记硬背,从原理的方面去理解:

C#区分引用类型和值类型的原因是为了得到更好的性能,值类型在栈中,引用类型在堆中。
为什么需要引用类型? 因为有一些类型可能很大,很占内存,这时候就用引用类型。
所以   C#中引用类型为  Object 和 string 这两个都有可能无限增大

结构体和类

  1. 结构体是值类型,类是引用类型,所以结构体分配空间在栈上  类分配空间在堆上,结构体的性能更高

  2. 由于栈是系统分配空间和释放的,所以结构体不能有析构函数

  3. 结构体初始化字段的时候不能给初始值,原因是:结构体的默认无参构造函数是被“锁定”的。看下面的例子:

    // 结构体的默认无参构造函数被“锁定”
    public struct Structure
    {

        private int i;
        // 正确
        public Structure(int i)
        
    {
            this.i = i;
        }
        // 报错
        public Structure()
        
    {
            this.i = 0;
        }
    }

    思考: 一个还是两个?

    public class StructureMethod
    {

        private int i;
        public StructureMethod(int i)
        
    {
            this.i = i;
        }
    }
    public struct Structure
    {

        private int i;
        public Structure(int i)
        
    {
            this.i = i;
        }
    }

    // 使用

    // 错误写法
    StructureMethod sm = new StructureMethod();

    // 正确写法
    Structure s = new Structure();

    看上面的代码,在初始化类的时候,只能使用一个参数的构造函数实例化对象,而实例化结构体却能使用两个构造函数来实例化,同样说明了结构体锁定默认构造函数的事实。

  4. 实际应用

    因为栈空间小,速度快,利用这个特点,结构体可以用于轻量级对象,用以提升效率,例如,矩形,颜色,点等用结构体就可以提升效率。或者在使用的时候,遇到传值的场景,希望拷贝一份进行传递,不像传递引用,这时候用结构体就会方便很多。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI