1. 程式人生 > >Operator運算子過載與Implicit隱式型別轉換

Operator運算子過載與Implicit隱式型別轉換

class Person

{  
    public int Age { get; set; }  
    public string Name { get; set; }  

    public static int operator -(Person p1, Person p2)//int為想減結果型別,-表示對-進行運算子過載  
        //引數為待計算的兩個值  
    {  
                 return p1.Age - p2.Age;  
    }  

//當過載>後,要求必須過載<
public static bool operator >(Person p1, Person p2)
{
return p1.Age > p2.Age;
}

    public static bool operator <(Person p1, Person p2)  
    {  
        return p1.Age < p2.Age;  
    }  

//將string 轉換成Person
public static implicit operator Person(string s)
{
Person p = new Person();
p.Name = s;
return p;
}
//將Person 轉換成string
public static implicit operator string(Person p)
{
return p.Name;
}

//當過載==後,要求必須過載!=

    public static bool operator ==(Person p1, Person p2)  
    {  
        return p1.Name == p2.Name && p1.Age == p2.Age;  
    }  

    public static bool operator !=(Person p1, Person p2)  
    {  
        return !(p1 == p2);  
    }  
}  

相關推薦

Operator運算子過載Implicit型別轉換

class Person { public int Age { get; set; } public string Name { get; set; } public static int operator -(Per

C++型別轉換 operator

在Win32 SDK, 該API函式原型為 BOOL GetClientRect( HWND hWnd, // 視窗控制代碼 LPRECT lpRect // 客戶區座標 ); 在MFC中,該函式的原型為void

15 More Effectic C++ ——條款21/22(過載防止型別轉換/使用複合操作符)

1 看不見的隱式型別轉換 當建構函式只有一個,編譯器會利用建構函式進行隱式型別轉換。如下面所示: class UInt { public: UInt(); UInt(int value); } UInt a = 0, b(0), c = 1; // 隱式轉換:int變成UI

JavaScript顯型別轉換型別轉換

本文談談JavaScript的型別轉換,我們知道在JavaScript中宣告變數不需指定型別, 對變數賦值也沒有型別檢查,同時JavaScript允許隱式型別轉換。這些特徵說明JavaScript屬於弱型別的語言。 在強型別的C++中,多數情況下建構函式需要宣告為exp

從Qt談到C++(一):關鍵字explicit型別轉換

提出疑問 當我們新建了一個Qt的widgets應用工程時。會自動生成一個框架,包含了幾個檔案。其中有個mainwindow.h的標頭檔案。就是你要操縱的UI主介面了。我們看看其中的一段程式碼: class MainWindow : public QMainWindow {

Java的強制型別轉換型別轉換

一.隱式型別轉換 1.Java中的8大基本資料型別 java基本資料型別就8種,除了這些都是引用型的了。 java四類八種基本資料型別: 第一類:整型 byte short int long

js基礎之關於Boolean及相等運算子型別轉換

Boolean函式 根據 w3c規範 布林物件共有這幾種方法: 方法 描述 把邏輯值轉換為字串,並返回結果。 返回 Boolean 物件的原始值。 布林值常

Mysql精度損失--型別轉換的坑

    今天在工作中遇到一個小問題,很不起眼的問題,但是很嚴重.就是mysql精度損失.    為什麼我們在進行mysql操作的時候要加引號呢?通常都是字串需要加引號,而數字就不需要加引號,但是這次我在純數字的字串中沒有加引號,所以問題就出現.  

C++:型別轉換和關鍵字explicit

《Inside the C++ Object Model》第二章開篇處有這樣一段話:“事實上關鍵字explicit之所以被匯入這個語言,就是為了給程式設計師提供一種方法,使他們能夠制止“單一引數的constructor”被當做一個conversion運算子”。 conversion運算子即型別

一道有趣的JS題(1 - 妙用型別轉換

題目 輸入:var a = [1,[2,3],a,[b,c]]; 輸出:1,2,3,a,b,c 解決方法3種 1. 使用遞迴 function flat1(arr){ let res = []; if( Array.isArray(arr) ){ arr.for

JavaScript中的型別轉換

最近在學習渡一教育的JavaScript精品課,成哥講的還是很棒的,開這個系列記錄下學習筆記 本次學習筆記,對應web前端開發JavaScript精英課js的第六課時   目錄  一.is NaN()  二.++ -- 自增自減運算子 &nb

有趣的JavaScript型別轉換

---恢復內容開始--- 有趣的JavaScript隱式型別轉換 JavaScript的資料型別是非常弱的(不然不會叫它做弱型別語言了)!在使用算術運算子時,運算子兩邊的資料型別可以是任意的,比如,一個字串可以和數字相加。之所以不同的資料型別之間可以做運算,是因為JavaScript引擎在運算之前會悄悄的

MySQL型別轉換導致索引失效

今天發現一個問題,where條件的列上明明有索引,但是執行計劃還是走全表掃描 mysql>  explain select task_id FROM mostop_xiaodai_collection_call_auto WHE

Javascript 型別轉換規則

1. Javascript隱式型別轉換與Java的區別 一個Javascript表示式中包含不同型別的值進行運算時,可能會發生隱式型別轉換,也可能不轉換,隱式型別轉換規則與運算元,運算子都相關,這是與強型別語言(Java)不同的地方,Java隱式型別一般只與運算元相關,即表數範圍小的型別向表

Qt——QVariant型別轉換實現型別系統(Type System)

QVariant v(709); qDebug() << v.toInt(); QVariant w("How are you! "); qDebug()

JavaScript面試題大坑之型別轉換例項程式碼

1.1-隱式轉換介紹 在js中,當運算子在運算時,如果兩邊資料不統一,CPU就無法計算,這時我們編譯器會自動將運算子兩邊的資料做一個數據型別轉換,轉成一樣的資料型別再計算 這種無需程式設計師手動轉換,而由編譯器自動轉換的方式就稱為隱式轉換 例如1 > "0"這行程式碼在js中並不會報

C++進階--型別轉換

//############################################################################ /* 隱式型別轉換 * * 型別轉換可分為: * 隱式

JavaScript強制型別轉換型別轉換

在JavaScript中宣告變數不需指定型別, 對變數賦值也沒有型別檢查,同時JavaScript允許隱式型別轉換。這些特徵說明JavaScript屬於弱型別的語言。 (1).轉換為字串 轉換為字串是應用程式中的常見操作,javascript提供了toStr

C語言進階學習1 型別轉換和強制型別轉換

本部落格記錄狄泰學院課程的學習 學習交流群:320628659 個人QQ:1367087622 歡迎大家交流學習 本章的學習目標: 學習隱式型別轉換和強制型別轉換的基本概念. 本意或非本意下使用型別轉換時可能會出現的問題. 在C語言是可以進行型別之間的轉換且其中存在兩種型別

由於mysql型別轉換導致的索引失效的問題

今天在測試執行計劃時,發現了以下問題: mysql 1739 due to type or collation conversion on field user表: 主鍵userId和us