天天看點

C# 語言特性

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

<a href="http://www.cnblogs.com/jobs/archive/2004/07/17/25218.aspx" target="_blank">http://www.cnblogs.com/jobs/archive/2004/07/17/25218.aspx</a>

3 struct結構體變量是一種不可以為null值的類型

    public struct TreeNode

        public int data;

        public TreeNode leftChild;

        public TreeNode rightChild;

        public TreeNode parent;

    }

嘗試定義一棵樹的節點,其中指向左右節點和雙親節點,編譯出錯:變量是一種不可以為null值的類型

正确

    public class TreeNode

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;

6 非泛型“***”不能與類型實參一起使用的錯誤

原因

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

    public class Cost

        public double cost;

        public int id;

    public class CostComparer : IComparer&lt;Cost&gt;

        public int Compare(Cost x, Cost y)

            if (x.cost - y.cost &lt; 1e-10)

            {

                return -1;

            }

            else

                return 1;

        }

    本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1893538,如需轉載請自行聯系原作者