温馨提示×

温馨提示×

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

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

C# 语言特性

发布时间:2020-07-10 16:07:36 来源:网络 阅读:690 作者:fengyuzaitu 栏目:编程语言

1 不支持将类型float隐式转换为int,毕竟会导致精度缺失,当然在C++语言中是允许的

代码

    class Program

    {

        static void Main(string[] args)

        {

            float aa = 3;

            int aaa = aa;

        }

    }

   

2 foreach不支持对遍历对象属性的修改

参考

http://www.cnblogs.com/chensuqian/p/4882207.html


http://www.cnblogs.com/jobs/archive/2004/07/17/25218.aspx


3 struct结构体变量是一种不可以为null值的类型

代码

    public struct TreeNode

    {

        public int data;

        public TreeNode leftChild;

        public TreeNode rightChild;

        public TreeNode parent;

    }

尝试定义一棵树的节点,其中指向左右节点和双亲节点,编译出错:变量是一种不可以为null值的类型


正确

 

    public class TreeNode

    {

        public int data;

        public TreeNode leftChild;

        public TreeNode rightChild;

        public TreeNode parent;

    }


4 修饰符“static”对该项无效

类方法的局部变量添加static关键字,再编译时 C# 编译器会报告以下错误:error CS0106: 修饰符“static”对该项无效

    C# 语言不允许使用 static 修饰符来声明方法内部的变量。但是在 C/C++ 语言中是允许这么做的。因此只能在类中定义一个静态变量成员,然后提供给类方法调用



5不可访问,因为它受保护级别限制

    为了访问结构体定义的成员,定义在结构体的public允许命名空间之外进行访问,如果需要访问结构体的变量成员,还必须在定义之前添加public关键字,这一点跟C++完全不一样


代码

    public struct Link

    {

        public int startNodeID;

        public int endNodeID;

        public bool forward;

        public bool backward;

        public int length;

        public int roadClass;

    }


非泛型“***”不能与类型实参一起使用的错误

原因

    缺少包含:using System.Collections.Generic;


代码

    public class Cost

    {

        public double cost;

        public int id;

    }


    public class CostComparer : IComparer<Cost>

    {

        public int Compare(Cost x, Cost y)

        {

            if (x.cost - y.cost < 1e-10)

            {

                return -1;

            }

            else

            {

                return 1;

            }

        }

    }

向AI问一下细节

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

AI