class LimitedInt
{
const int MaxValue=https://bbs.csdn.net/topics/100;
const int MinValue=https://bbs.csdn.net/topics/0;
public static implicit operator int(LimitedInt li)
{
return li.TheValue;
}
public static implicit operator LimitedInt(LimitedInt li)
{
LimitedInt li=new LimitedInt();
li.TheValue=https://bbs.csdn.net/topics/x;
return li;
}
private int _theValue=https://bbs.csdn.net/topics/0;
public int TheValue
{
get{return _theValue;}
set
{
if(value<MinValue)
_theValue=https://bbs.csdn.net/topics/0;
else
_theValue =value>MaxValue?MaxValue:value;
}
}
}
class Program
{
static void Main()
{
LimitedInt li=500;
int value=https://bbs.csdn.net/topics/li;
Console.WriteLine("li:{0},value:{1}",li.TheValue,value)
}
}
uj5u.com熱心網友回復:
public static implicit operator LimitedInt(int x){
LimitedInt li=new LimitedInt();
li.TheValue=https://bbs.csdn.net/topics/x;
return li;
}
uj5u.com熱心網友回復:
上面相應代碼部分寫錯了
uj5u.com熱心網友回復:
我好像有點明白了,int value=https://bbs.csdn.net/topics/li; 相當于把li物件類的呼叫賦值給了 value; 所以在Console.WriteLine時輸入value相當于又呼叫了li物件的類uj5u.com熱心網友回復:
static implicit operator int(LimitedInt li)就是讓你能夠把int轉換為LimitedInt型別。
如果沒有這個隱式轉換,int和LimitedInt是不相配的兩種型別,不能直接用等號來賦值。
uj5u.com熱心網友回復:
哦哦,原來是這個意思呀
uj5u.com熱心網友回復:
不解釋了,自行百度“C#運算子多載”C#uj5u.com熱心網友回復:
這不是多載好吧~_~
uj5u.com熱心網友回復:
哦哦哦哦哦哦,懂了,uj5u.com熱心網友回復:
其實我問的不是你說的這個問題,我想問的是value是怎么使用LimitedInt這個類的LimitedInt方法的
uj5u.com熱心網友回復:
型別轉換(Cast operator)的確是一種運算子。int i = (int)123.4; // 這里的 (int)就是型別轉換運算子
當有一個顯示轉換。
class LimitedInt
{
public int i;
public static explicit operator LimitedInt(int i)
{
return new LimitedInt() { i = i};
}
}
我們可以這樣寫
LimitedInt li = (LimitedInt)123; // 這里的 (LimitedInt)也是型別轉換運算子
樓主的例子中用的是implicit operator (隱式轉換),可以不用寫(LimitedInt),但實質上該操作也還是型別轉換操作。
uj5u.com熱心網友回復:
那么意思就是說LimitedInt賦值給了value,當列印value時,相當于再次使用了LimitedInt類?
uj5u.com熱心網友回復:
int i = (int)123.4; 類比這個例子
123.4賦值給了i,列印i的時候,并不會用到123.4。
uj5u.com熱心網友回復:
多載運算子,就是你制定規矩。兩邊的型別按照這個規矩來操作。
uj5u.com熱心網友回復:
運算子多載。這是,可以用于2個物件之間的直接運算。uj5u.com熱心網友回復:
嗯嗯,懂了,謝謝,剛才樓上大佬說相當于定義規矩,然后就開竅了
uj5u.com熱心網友回復:
嗯嗯,謝謝,懂了,按照大佬的說法,我跑了一遍代碼,開竅了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/122605.html
標籤:C#
