關於“結構”好彆扭的一段話

類和結構的相似之處有很多-結構可以實現介面,並且可以有同類一樣的成員。結構和類在很多重要的方面也不相同,無論如何:結構是數實值型別而不是參考型別,而且結構不支援繼承。結構的數值或是儲存“在堆棧中”或是“線上”。仔細的程式員可以通過明智地使用結構來提高效能。 例如,對Point使用結構而不是類,會在成員的儲存位置上造成很大不同。下面的程式建立並初始化了一個100個單元的數組。如果Point用類實現,程式就會佔用101個分立對象,一個分給數組另外100個分給每個元素。 class Point{ 

《大話設計模式》第一章

第一,要改,只需要改要改之字,此為可維護;第二,這些字並非用完這次就無用,完全可以在後來的印刷中重複使用,此及可複用;第三,此詩若要加字,只需另刻字加入即可,這是可擴充;第四,字的排列其實可能是豎排可能是橫排,此時只需將活字移動就可做到滿足排列需求,此是靈活性好。我寫出的代碼與小菜第一版代碼本質上完全相同,如果我去面試,也是一個失敗的傢伙。不寫成類的原因是,這麼簡單的代碼還要寫成類嗎?意味著,我對類寄以較高的希望,只有複雜的東西才用的超級武器,我現在不用,是因為我的東西還不夠複雜。順序執行的代碼

本機可以,伺服器卻不行

早上調試一個程式,是使用AJAX的XMLHTTP這種方式擷取資料。本機測試正常,然後上傳到伺服器,發現過濾功能居然不能使用,於是開始懷疑這懷疑那:懷疑POST方法不能使用(不過POST方法後,要使用Request.Params[""]來擷取資料,而不能用Request.QueryString[""]來擷取資料,這倒是真的);懷疑我的變數xhttp不能連著用兩次。  var xhttp = new ActiveXObject("Microsoft.XMLHTTP");   var para="..

《大話設計模式》第五章

依賴倒轉原則,或依賴倒置原則抽象不應該依賴細節,細節應該依賴於抽象。就是要針對介面編程,不要對實現編程。高層模組不應該依賴低層模組。兩個都應該依賴抽象。面向過程的開發時,為了使得常用代碼可以複用,一般都會把這些常用代碼寫成許許多多函數的程式庫,這樣我們在做新項目時,去調用這些低層的函數就可以了,這就叫做高層模組依賴低層模組。但是我們要做新項目時,發現商務邏輯的高層模組都是一樣的,但客戶卻希望使用不同的資料庫可儲存資訊方式,這時就出現麻煩了。我們希望能再次利用這些高層模組,但高層模組都是與低層的訪

添加JS檔案為連結

昨天測試VS的添加現有項,添加為連結,但對JS檔案沒有成功,還以為對是對JS檔案不能使用連結,但今天用VSS試一下,又有效果。後來詳細一點測試,發現,如果第一次目錄下有同名檔案,添加連結檔案可以成功,而如果本目錄下的同名檔案添加過後,連結其它目錄下的同名檔案,就一直連結不成功,也沒有提示,目錄中也沒有該檔案。把本目錄的同名檔案刪除之後,就可以連結成功。連結成功其實只是在VS環境中能夠直接編輯它而已,然後發布的時候,也會把它給發布在本虛擬目錄下。現在還有一個問題,我在寫<script>

修改或加強基類原有的方法

修改或加強基類原有的方法,專業術語要“方法重寫”。我老是把這三個概念混在一起:重載、重構、重寫,現在區分一下:重載是建立一個相同名稱、不同參數的成員函數。重構是“在不改變軟體現有功能的基礎上,通過調整程式碼改善軟體的品質、效能,使其程式的設計模式和架構更趨合理,提高軟體的擴充性和維護性”。這與面對對象沒有直接關聯。重寫就是子類對父類的一個方法進行修改。如,我們的rectpoint準備對父類的show方法進行重寫,讓其顯示之前會先顯示“rect:",然後再顯示"x=nn

對“空語句可能有錯誤”的處理

為了理解上的方便,有時寫出如下的代碼:if (i == 0) ;else{ ...}但編譯器老是提示“空語句可能有錯誤”,感覺不爽。如果用調整編譯器警告層級,又擔心真的出錯時,又不知道。如微軟舉的例子:for (int i = 0; i < 10; i++) ;{  Console.WriteLine("OK");}理想情況下,空語句用一個nop來指明也不錯,但我找不到類似的這種語句,後來發現對空語句前後加入一個花括弧,也會讓編譯器停止提示。目前就暫時用這種方法吧if (i == 0) {

應該用什麼理論來解釋

建立一個WEB應用程式,在介面上拉一個ListBox,然後在Page_Load代碼中寫入如下內容:      ListItem oItem = new ListItem("編號", "BH");      ListBox1.Items.Add(oItem);      oItem.Text = "名稱";      oItem.Value = "MC";      ListBox1.Items.Add(oItem);本意是要增加一個編號,一個名稱,運行後,結果卻是兩個都是名稱了。之前,My

學習摘錄1–Hello, World!

C#的目標在於把Visual Basic的高生產力和C++本身的能力結合起來。使用“using”命令後,就可以無障礙地使用名稱空間中的各種類型成員。即如果沒有using System,則語句前面補全System.也是可以的。以下代碼是等效的:using System;class hello{ static void Main() {  Console.WriteLine("Hello, World!"); }}或class hello{ static void Main() {  System.

JQuery學習筆記:typeof的使用

JQuery的前面幾句就把我給搞得暈了頭,只能對其中的一點一滴去測試。第一句:if (typeof window.jQuery ==

類成員的訪問類型

類成員的訪問類型(又稱存取修飾詞)應該有四種,但我能理解的先只有兩種:public與private。private定義的成員在外部無法訪問到,如果外部強行訪問,編譯器告錯,範例程式碼如下: 1using System; 2 3class m 4{ 5 static void Main() 6 { 7  point p=new point(); 8  Console.WriteLine("x=" + p.x.ToString()); 9 }10}1112class point13{14 priva

jQuery學習筆記:A=A居然有用

第二句是:window.undefined = window.undefined;我開頭就在上面寫上這樣的注釋:廢話 注釋掉後來查了網路,才知道,這是為了相容以前的舊版本。從微軟的JScript協助文檔中看出“undefined 屬性”的版本要求是5.5,即5.5以前的版本,window.undefined沒有定義。但undefined這種東西是一直存在的,這樣window.undefined =

修改或加強基類的屬性

屬性的代碼會特別一些,是由get與set組成,重載時,有時只要重載其set代碼,需要如何處理?首先是基類屬性要加上virtual,然後子類就可以這樣寫(假設只要重載set): public override int x {  set   {   if (value<0) m_x=0;   else if (value>20) m_x=20;   else m_x=value; 

JQuery學習筆記:this表示什嗎?

這一句:  if (window == this) return new jQuery(a, c);我就對this這個對象進行一些測試:1.它代表window這個對象測試代碼:<html xmlns="http://www.w3.org/1999/xhtml"><head> <title>Test</title></head><body> <script language="javascript"

OPEN OFFICE提示

001:open office製作柱狀圖與折線圖如果把EXCEL中的圖表直接用OPEN OFFICE開啟,將會發現原來製作的,同時帶柱狀圖與折線圖的圖表,只顯示出柱狀圖了。是OPEN不支援兩種類型的圖表同時顯示嗎?不是,原來,在OPEN中,要對圖表指定其類型為柱狀圖的擴充屬性,才能實現同時帶柱狀圖與折線圖。具體操作為,點擊圖表,右鍵,圖表類型,圖表分類:2維;圖表類型:柱;變體:組合圖:線條和柱,線條的數目設為1,即可。002:open

屏蔽基類原有的方法

目前,基類的所有公開的資料成員與成員函數,以及所有protected的資料成員與成員函數都會被子類一一繼承。但會不會有時候要把基類的一些介面給屏蔽掉呢?好像是沒什麼具體執行個體,但瞭解一下也是可以的。查網路上的一些方法,一般是方法重寫,裡面什麼內部都沒有。這樣說來,也只是基類如果執行該方法,編譯器是不會報錯的,只是沒有任何語句在裡面執行而已。方法重寫時,基類方法要標為virtual,子類的方法標為override,這樣即可。using System;static class m{ static

又遇到的兩個小問題

如何定義公用常量?得到的答案是:在公用類中定義,任何地方就可以直接使用。例如我有一個公用類GGL,代碼如下:using System;namespace A_TX{  public class GGL  {    public GGL()    {    }    ……  }}現在加入這兩行:using System;namespace A_TX{  public class GGL  {    public const long XMXZ2007 = 700;    public const

增加一個基類沒有的方法

增加一個基類沒有的方法,只要按正常的代碼寫就行,沒有什麼大困難。如我對rectpoint增加一個showxy的方法: public void showxy() {  Console.WriteLine("(x, y)=(" + m_x.ToString() + ", " + m_y.ToString() + ")"; }這時,我編譯一下,提示:p.cs(67,34): error CS0122: “point.m_x”不可訪問,因為它受保護層級限制p.cs(26,14):

建構函式的重載

建構函式的重載是挺明顯的一件事,我們經常聲明一個類對象時,有時寫上一些參數,有時什麼參數都不寫。如果是VB,只能用optional來實現,並且限制還挺多的。而面對對象中,卻可以用重載來靈活實現。先寫一個例子看看:using System;class m{ static void Main() {  point p=new point(12);  Console.WriteLine ("x=" + p.x.ToString()); }}class point{ int m_x = 0; publi

這樣寫為什麼不出錯:point rp=new rectpoint(12, 15);

在測試這些程式中發現一個問題,這樣的代碼程式可以通過:using System;static class m{ static void Main() {  point rp=new rectpoint(12, 15);  rp.show(); }}class point{ protected int m_x;  protected int m_y;  public virtual void show() {   Console.WriteLine("x=" + m_x.ToString() +

總頁數: 61357 1 .... 5216 5217 5218 5219 5220 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.