強轉,高度大氣上檔次,隱轉,低調奢華有內涵

2021-10-05 12:46:51 字數 1474 閱讀 7911

甲:tm,又要建乙個物件,真煩,就沒有省事點的**麼?算啦,寫吧:

people people = new people();

people.name = "小胡";

people.age = 25;

people.profession = "程式設計師";

people.*** = "男";

people.todo();

乙:都啥年代了,還用這麼low的方法初始化物件,對於高頻建立的類,你就不能給它寫個構造方法,一行**足以建立物件並且呼叫方法:

new people("小胡", 25, "程式設計師", "男").todo();

乙:或者直接使用初始化器,更加自由:

new people() .todo();

丙:既然說到是會高頻建立的類,還有一種方式去建立它:

((people)"小胡,25,程式設計師,男").todo();

甲、乙:厲害,怎麼做到的?

丙:當然是強制轉換啦,看紅色的**,這就是讓類支援指定型別強行轉換的秘訣:

class people

public int age

public string profession

public string ***

public people()

public people(string _name,int _age,string _profession,string _***)

public void todo()

,性別,今年歲,我的工作是", name, ***, age, profession);}

public static explicit operator people(string infostr)}

public static

implicit operator

people(string infostr)

支援隱式轉換的類,則可以這樣建立:

people p = "小胡,25,程式設計師,男";

p.todo();

並且,隱式轉換相容強制轉換,也就是說,你依然可以用強行轉換的方式進行呼叫:

((people)"小胡,25,程式設計師,男").todo();

總而言之,用轉換的方式進行物件的建立,適用於程式設計師對型別建立非常頻繁,並且對初始化格式非常熟悉的情況。當然用轉換建立物件的方法也並非絕對的死板,可以根據入參的格式,來定義多種初始化,如下:

public static implicit operator people(string infostr)}

那麼我們就有多種建立物件的方式可供選擇:

//方式1

((people)"1,小胡,25,程式設計師,男").todo();

//方式2

((people)"2,小胡,25").todo();

//方式n

((people)"n,小胡,程式設計師").todo();

甲、乙:轉換還能這麼用,學到了學到了。

高階,大氣,上檔次的JS驗證

對於正則的判斷,都是通過正規表示式進行判斷,如果判斷為false,則返回提示框,讓使用者正確的輸入資料。1.判斷陣列內是否有重複的元素 var ary new array 111 alert mm ary 直接傳入乙個陣列即可。驗證重複元素,有重複返回true 否則返回false function ...

指標強轉的區別

最容易理解的解釋 dynamic cast 通常在基類和派生類之間轉換時使用 在類層次間進行上行轉換時,dynamic cast和static cast的效果是一樣的 在進行下行轉換時,dynamic cast具有型別檢查的功能,比static cast更安全。const cast 主要針對cons...

型別強轉 Delphi版

一 按整型格式儲存,強轉成整型格式顯示 var arrforinteger array 1.4 of char 也可以是 arrforinteger array 0.3 of char begin showmessage 測試型別強轉!pinteger arrforinteger 1234567 以...