六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

asp.net高級(jí)圖文詳細(xì)教程(3)-對(duì)象

[摘要]前面講到如何構(gòu)造bbs對(duì)象,有朋友要求我簡(jiǎn)單介紹一下c#里如何構(gòu)造對(duì)象,下面我就簡(jiǎn)單說(shuō)一下,算是補(bǔ)上這一課吧。 C#里的類(lèi)(Class),也可以叫做對(duì)象(object),它由以下幾部分組成:成...
前面講到如何構(gòu)造bbs對(duì)象,有朋友要求我簡(jiǎn)單介紹一下c#里如何構(gòu)造對(duì)象,下面我就簡(jiǎn)單說(shuō)一下,算是補(bǔ)上這一課吧。

    C#里的類(lèi)(Class),也可以叫做對(duì)象(object),它由以下幾部分組成:成員變量,屬性和方法,其中必不可少的是這個(gè)類(lèi)不帶任何參數(shù)的構(gòu)造函數(shù),它不指定返回類(lèi)型,作用是初始化類(lèi)的成員變量、分配內(nèi)存等。和c++不同,c#類(lèi)只有構(gòu)造函數(shù),不需要析購(gòu)函數(shù),也就是說(shuō)你只需要為成員變量分配內(nèi)存,而不必要顯式的釋放內(nèi)存,這是因?yàn)閏#和java一樣都是通過(guò)垃圾收集器來(lái)釋放內(nèi)存。明白這些,我們就可以構(gòu)造一個(gè)最簡(jiǎn)單的類(lèi),一個(gè)什么也不做的類(lèi):

public class MyClass
{
  public MyClass(){} ;
}

要使用時(shí)只需要簡(jiǎn)單的new一個(gè)出來(lái)就行了,象這樣:MyClass myClass1 = new MyClass() ;不要懷疑,你的確已經(jīng)創(chuàng)建了一個(gè)對(duì)象,盡管它什么也不做:)。下面我們給它加一個(gè)私有字符型成員變量m_strTitle,并且在構(gòu)造函數(shù)里初始化這個(gè)成員變量,整個(gè)類(lèi)的定義就變成這樣:
public class MyClass
{
   //私有成員變量
   private string m_strTitle ;

   //構(gòu)造函數(shù)
   public MyClass()
   {
     m_strTitle = "我已經(jīng)被賦初值了" ;
   }

}

   注意定義成員變量的這行代碼:private string m_strTitle ; 其中string好理解,說(shuō)明m_strTitle是string類(lèi)型的,那么最前面的private是什么作用呢?這個(gè)private(私有)說(shuō)明這個(gè)成員變量是私有的,只有這個(gè)類(lèi)內(nèi)部的函數(shù)可以使用,而其他任何地方包括子類(lèi)的函數(shù)都不能使用它,除了private,你還可以定義成public(公共)和protected(保護(hù)),public表明這個(gè)成員變量在任何地方都可以使用,而protected表明這個(gè)變量只能在本類(lèi)或子類(lèi)中使用。所以,如果我們想要使用這個(gè)成員變量,可以把它定義成public,但對(duì)于面向?qū)ο缶幊虂?lái)說(shuō)這不是個(gè)好的編程習(xí)慣,因?yàn)樗茐牧祟?lèi)的封裝性,在c++里好的方法是再定義公共函數(shù)來(lái)存取這個(gè)私有變量,而c#里提供了一個(gè)更加方便的方法,那就是屬性(property),現(xiàn)在我們把這個(gè)屬性Title加上:
public class MyClass
{
   //私有成員變量
   private string m_strTitle ;

   //屬性
   public string Title
   {
     get
     {
       return this.m_strTitle ;
     }
     set
     {
       this.m_strTitle = value ;
     }
   }
   //構(gòu)造函數(shù)
   public MyClass()
   {
     m_strTitle = "我已經(jīng)被賦初值了" ;
   }

}

    讓我們來(lái)看看如何定義屬性,首先同樣需要作用域限定符,通常我們使用public,表明任何地方都可以使用該屬性,其次有兩個(gè)關(guān)鍵字需要注意:this和value , this代表類(lèi)本身,所以this.m_strTitle就是代表本類(lèi)的成員變量m_strTitle , value代表當(dāng)這個(gè)屬性作為左值時(shí)等號(hào)右邊的值,象這樣:myClass.Title = "hello" , 那么value的值就是"hello" , 好了,這個(gè)類(lèi)已經(jīng)可以使用了,象下面:

public static void Main(String[] args)
{
   MyClass myClass = new myClass() ;    //構(gòu)造MyClass類(lèi)的一個(gè)實(shí)例
   Console.WriteLine(myClass.Title) ;   //結(jié)果是:我已經(jīng)被賦初值了
   myClass.Title = "我的值改變了" ;     //改變Title屬性的值
   Console.Writeline(myClass.Title) ;   //這時(shí)結(jié)果變成:我的值改變了
}
   好了,現(xiàn)在讓我們給這個(gè)類(lèi)加上一個(gè)MyMethod方法,這個(gè)方法沒(méi)有返回值,帶一個(gè)字符型參數(shù)。
public class MyClass
{
   //私有成員變量
   private string m_strTitle ;

   //屬性
   public string Title
   {
     get
     {
       return this.m_strTitle ;
     }
     set
     {
       this.m_strTitle = value ;
     }
   }

   //構(gòu)造函數(shù)
   public MyClass()
   {
     m_strTitle = "我已經(jīng)被賦初值了" ;
   }

   //方法
   public void MyMethod(string a_str)
   {
     this.m_strTitle = a_str ;
   }
}

   這是我們可以改寫(xiě)一下剛才那個(gè)程序,運(yùn)行結(jié)果同剛才一樣:

public static void Main(String[] args)
{
   MyClass myClass = new myClass() ;    //構(gòu)造MyClass類(lèi)的一個(gè)實(shí)例
   Console.WriteLine(myClass.Title) ;   //結(jié)果是:我已經(jīng)被賦初值了
   myClass.MyMethod( "我的值改變了" );     //改變Title屬性的值
   Console.Writeline(myClass.Title) ;   //這時(shí)結(jié)果變成:我的值改變了
}

   以上簡(jiǎn)單講了一下如何定義類(lèi),看完這些內(nèi)容,可能你就可以理解上一節(jié)我們構(gòu)造的那個(gè)bbs對(duì)象,讓我們?cè)倏匆幌滤亩x:

namespace MyOwnClass
{
    using System;
    using System.Data.SQL ;
    using System.Data ;
    
    ////////////////////////////////////////////////////////////////////
    //
    // Class Name :       BBS
    //
    // Description:       論壇類(lèi),構(gòu)造一個(gè)論壇對(duì)象
    //
    // date:              2000/02/03
    //
    /// ////////////////////////////////////////////////////////////////
    public class BBS
    {
        //私有變量
        private string m_strTitle ;        //bbs名稱(chēng)
        private int m_intForumCount ;        //版面數(shù)
        private int m_intTopicCount ;        //貼子數(shù)
        private int m_intUserCount ;        //注冊(cè)用戶數(shù)
        
        //屬性
        public string Title
        {
            get
            {
                return m_strTitle ;
            }
        }

        public int ForumCount
        {
            get
            {
                return m_intForumCount ;
            }
        }

        public int TopicCount
        {
            get
            {
                return m_intTopicCount ;
            }
        }

        public int UserCount
        {
            get
            {
                return m_intUserCount ;
            }
        }

        //構(gòu)造函數(shù)
        public BBS(string a_strTitle)
        {
            //
            // TODO: Add Constructor Logic here
            //
            m_strTitle = a_strTitle ;

            //讀取數(shù)據(jù)庫(kù)
            MyConnection myConn = new MyConnection() ;
            SQLCommand myCommand = new SQLCommand() ;
            myCommand.ActiveConnection = myConn ;
            myCommand.CommandText = "up_GetBBSInfo" ;    //調(diào)用存儲(chǔ)過(guò)程
            myCommand.CommandType = CommandType.StoredProcedure ;

            try
            {
                myConn.Open() ;
                SQLDataReader myReader ;
                myCommand.Execute(out myReader) ;
                if (myReader.Read())
                {
                    m_intForumCount = (int)myReader["ForumCount"] ;
                    m_intTopicCount = (int)myReader["TopicCount"] ;
                    m_intUserCount  = (int)myReader["UserCount"] ;
                }
                else
                {
                    throw(new Exception("表或存儲(chǔ)過(guò)程不存在")) ;
                }

                //清場(chǎng)
                myReader.Close();
                myConn.Close() ;
            }
            catch(SQLException e)
            {
                throw(new Exception("數(shù)據(jù)庫(kù)出錯(cuò):" + e.Message)) ;
            }

        }
    }
}

   和剛才我們講的稍有不同,首先看第一行namespace MyOwnClass , 聲明目前這個(gè)類(lèi)的名字空間是MyOwnClass,名字空間就像一個(gè)包,其中可以包含很多類(lèi)。再看這行:    using System; 這個(gè)告訴編譯器,我要引用System名字空間里的對(duì)象。然后其他的就好理解了吧?




主站蜘蛛池模板: 最新高清无码专区 | 青青青视频在线 | 色黄网站成年女人色毛片 | 欧美亚洲国产人成aaa | 日韩成人免费aa在线看 | 色呦呦视频在线观看 | 欧洲亚洲视频 | 伊人狼人综合网 | 在线综合亚洲欧美网站天堂 | 日韩不卡一级毛片免费 | 日韩亚洲综合精品国产 | 午夜视频一区二区 | 四虎影永久在线观看精品 | 欧洲97色综合成人网 | 午夜久久免费视频 | 亚州一级毛片在线 | 欧美一级三级在线观看 | 人人干狠狠干 | 天天影视色香欲综合网天天录日日录 | 日韩.欧美.国产.无需播放器 | 我要看免费一级毛片 | 欧美在线观看一区二区三区 | 一区二区三区视频网站 | 欧美亚洲第一页 | 日本在线观 | 五月天六月婷婷 | 天天久久狠狠色综合 | 日韩不卡毛片 | 日韩精品一区二区三区中文 | 色综合久久综合欧美综合图片 | 日韩成人在线观看视频 | 三级在线观看国产 | 日韩欧美区 | 日韩一卡 二卡 三卡 四卡 免费视频 | 色悠久久久久综合欧美99 | 啪啪精品 | 亚洲乱码国产一区网址 | 午夜在线观看视频 | 婷婷六月久久综合丁香乐透 | 亚洲女人的天堂 | 天堂网免费 |