[C#][coding][OOP] CS1519 類別、結構或介面成員宣告中無效的語彙基元 - Slash Engineer 要多斜有多斜

Breaking

Slash Engineer 要多斜有多斜

程式設計的學習過程 (環境設置、開發環境、程式設計、語法練習、資料結構等等...) 99'暑假:六月初開始. 社會新鮮人:十一月初開始.

2012年12月11日 星期二

[C#][coding][OOP] CS1519 類別、結構或介面成員宣告中無效的語彙基元

困擾了半個小時,想說哪來的奇怪語法,怎麼會造成這個現象,
參考了書上與網路上的範例,程式碼應該是正確的才是,

後來才發現,是自己的觀念錯誤,原來當初一直出現的

"類別、結構或介面成員宣告中無效的語彙基元"

是對於物件的基本概念錯誤,
這也多半也要歸咎於自己在學習時期,沒有打好基礎,只要程式碼能跑就好...
使得現在許多觀念一直要慢慢釐清才行。

以C#舉例來說,
*******************************************************
錯誤寫法↓***2022/06/09 update style for reading***
*******************************************************
namespace ConsoleApplication1
{
    class MyClassOne
    {
        private int a = 100;
        private float b = 100.001;

        /*以下寫法完全錯誤,類別只能包含方法、屬性(另外兩個我還沒用過,
        暫不解釋),以及子類別等,所以直接在類別裡宣告Console.WriteLine的話,
        物件A是呼叫不到的*/
        Console.WriteLine("整數、浮點數");
                           Console.WriteLine("a = " + a);
                           Console.WriteLine("b = " + b);
                 }

    class Program
    {
        static void Main(string[] args)
        {
            MyClassOne A = new MyClassOne();
            A.Console.WriteLine();
        }
    }
}


*******************************************************
正確寫法↓***2022/06/09 update style for reading***
*******************************************************
namespace ConsoleApplication1   //類似java的 package
{
    class MyClassOne              //宣告MyClassOne類別
    {
        //整數、浮點數
        private int a = 100;
        private float b = 100.001;

        /*將Console.WriteLine()宣告在MyMethodOne()這個方法裡,
        這時候物件A只要直接Call MyMethodOne就可以印出a, b的值了*/
        public void MyMethodOne()
        {
            Console.WriteLine("整數、浮點數");
            Console.WriteLine("a = " + a);
            Console.WriteLine("b = " + b);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyClassOne A = new MyClassOne();
            A.MyMethodOne();
        }
    }
}

 我想似乎有點輪廓對於物件這回事兒了...

C# class中只能有Field, Property, Method(code expression), Event, Delgate
若要使用Property,需要透過get 或 set,否則會失去屬性的保密性。

Ref: C#類別_參考MSDN

沒有留言:

張貼留言

問題沒有大小或好壞