C# 零散知識(shí)點(diǎn)總結(jié)

關(guān)于C#的測(cè)試斷言詳解
委托:http://www.cnblogs.com/liuhaorain/p/3911845.html

sbyte(8位)

sbyte表示一種整數(shù)類(lèi)型系吭,可以表示大小和存儲(chǔ)范圍夺溢。
從sbyte轉(zhuǎn)換為short昭抒,int呼奢,long墓贿,double祥款,float较锡,decimal都是隱式轉(zhuǎn)換完残。
不能將一個(gè)存儲(chǔ)大小更大的非文本數(shù)字類(lèi)型轉(zhuǎn)換給sbyte伏钠。

前綴0x或者0X表示十六進(jìn)制文本, 0b或者0B表示二進(jìn)制文本谨设,十進(jìn)制沒(méi)有前綴.

decimal類(lèi)型用來(lái)表示高精度的浮點(diǎn)數(shù), 可用1M來(lái)表示熟掂。

varible.GetType() ,typeof(varible)

int n =9;
n.GetType() 等價(jià)于 typeof(n) , 獲取n的數(shù)類(lèi)型

ReferenceEquals() 比較兩個(gè)數(shù)值型的值

using System;

public class Example
{
   public static void Main()
   {
      int n1 = 12;
      int n2 = 82;
      long n3 = 12;

      Console.WriteLine("n1 and n2 are the same type: {0}",
                        Object.ReferenceEquals(n1.GetType(), n2.GetType()));
      Console.WriteLine("n1 and n3 are the same type: {0}",
                        Object.ReferenceEquals(n1.GetType(), n3.GetType()));
   }
}
// The example displays the following output:
//       n1 and n2 are the same type: True
//       n1 and n3 are the same type: False 

值類(lèi)型和 引用類(lèi)型

值類(lèi)型: 值類(lèi)型的變量中存儲(chǔ)的實(shí)際數(shù)據(jù)扎拣,賦值時(shí)是編譯器把數(shù)據(jù)復(fù)制一份赴肚,然后賦給另一個(gè)變量
引用類(lèi)型:引用類(lèi)型變量中存儲(chǔ)的是指向?qū)嶋H數(shù)據(jù)的引用(真是數(shù)據(jù)的內(nèi)存地址),在賦值操作時(shí),和值類(lèi)型一樣,也要進(jìn)行復(fù)制的操作捧挺,不過(guò)它復(fù)制的不是實(shí)際數(shù)據(jù)堰怨,而是引用(真實(shí)數(shù)據(jù)的內(nèi)存地址),所以引用類(lèi)型在賦值操作時(shí)姨拥,賦值給另一個(gè)變量的是內(nèi)存地址,這樣兩個(gè)變量中保存的是同一引用亮瓷,它們的指向完全一樣琴锭。

例子2:

class MyClass            
 {
       public int val;
}

struct MyStruct
{      public int val;  }

class Program
{
      static void Main(string[] args)
      {
             MyClass objectA=new MyClass();
             MyClass objectB=objectA;  //引用變量的賦值 賦值操作完成后晰甚,兩個(gè)變量都指向同一內(nèi)存地址
             objectA.val=10; //給objectA.val賦值=10 由于objectB和objectA指向同一內(nèi)存地址,所以ojbectB.val的值也為10
             objectB.val=20; //給objectB.val賦值=20 由于objectB和objectA指向同一內(nèi)存地址决帖,所以objectA.val的值也為20

             MyStruct structA=new MyStruct();
             MyStruct structB=structA;                //結(jié)構(gòu)是值類(lèi)型 賦值操作完成后厕九,兩個(gè)結(jié)構(gòu)中的結(jié)構(gòu)信息一致。注意是“結(jié)構(gòu)中的信息”一致地回。
             structA.val=30;
             structB.val=40;

             Console.WriteLine(objectA.val);         //輸出結(jié)果是20
             Console.WriteLine(objectB.val);         //輸出結(jié)果是20
             Console.WriteLine(structA.val);         //輸出結(jié)果是30
             Console.WriteLine(structB.val);         //輸出結(jié)果是40
             Console.ReadLine();
       }
}

總結(jié):

  • 值類(lèi)型的變量賦值扁远,只是數(shù)據(jù)之間的復(fù)制
  • 引用類(lèi)型賦值操作,復(fù)制的引用刻像,即內(nèi)存地址畅买,引用類(lèi)型賦值后 ,二者指向同一個(gè)內(nèi)存地址细睡。如果改變其中一個(gè)引用類(lèi)型變量的值谷羞,另一個(gè)也會(huì)跟著變。

*另一種不同于上面的引用類(lèi)型,String, 它的特點(diǎn)就是在賦值的時(shí)候或者字符串相加操作時(shí)溜徙,它會(huì)在內(nèi)存中開(kāi)辟一個(gè)新的內(nèi)存空間來(lái)存儲(chǔ)操作后的字符串. *

using System;  
class Test  
{  
    public static void Main()  
    {  
        string s1 = "hello";  
        string s2 = s1;  
        Console.WriteLine(s1);  
        Console.WriteLine(s2);  
        s1 = "world";  
        Console.WriteLine(s1);  
        Console.WriteLine(s2);  
    }  
}  
/* 
hello 
hello 
world 
hello 
*/  

解釋
(1) s1 = "hello", 執(zhí)行的是在堆中創(chuàng)建了一個(gè)String類(lèi)型的對(duì)象湃缎,然后將這個(gè)對(duì)象的地址賦值給s1.
(2) s2 = s1, 執(zhí)行的是將"hello"對(duì)象的地址賦值給s2,此時(shí)s2和s1是指向的同一個(gè)地址;
(3) s1 = "world". 這里編譯器將會(huì)在內(nèi)存中重新創(chuàng)建一個(gè)String類(lèi)型的對(duì)象蠢壹,然后將其地址賦值給s1嗓违,此時(shí)s1將指向新的地址,不再和s2指向相同的地址图贸。所以這里給s1賦值實(shí)際上并不會(huì)改變"Hello"這個(gè)對(duì)象蹂季,也就是不會(huì)改變s2所指向的地址的內(nèi)容,它改變s1指向的地址(重新分配一個(gè)新的地址)求妹,而不是它原來(lái)指向的對(duì)象的內(nèi)容乏盐。

強(qiáng)制類(lèi)型轉(zhuǎn)換

隱式類(lèi)型轉(zhuǎn)換: int (32位,4個(gè)字節(jié)(byte)) 轉(zhuǎn)換到-------> long (64位)制恍,float(4byte父能,32位),double(64)净神,decimal(128何吝,有效位數(shù)很大,但是表示的范圍比f(wàn)loat和double都小) 鹃唯。
a. 顯式類(lèi)型轉(zhuǎn)換:(int)variable.

  • 從long到int的轉(zhuǎn)換爱榕,必須顯式,否則會(huì)產(chǎn)生編譯錯(cuò)誤坡慌。
  • 該方式對(duì)于float的轉(zhuǎn)換黔酥,會(huì)失去精度。
  • 可以用于object ---> int, 前提是:object的值要被賦予int類(lèi)型的值跪者,否則會(huì)產(chǎn)生編譯錯(cuò)誤棵帽。
    注意: 不能用于char 類(lèi)型到int類(lèi)型的轉(zhuǎn)換,轉(zhuǎn)后的值會(huì)變成ASCII代碼渣玲,而不是你想要

b. int.Parse(string 類(lèi)型的變量)
表示把內(nèi)容是數(shù)字的字符串轉(zhuǎn)化為int
該方法只能處理字符串內(nèi)容逗概,而且字符串的內(nèi)容只能在int類(lèi)型可表示的范圍之內(nèi)。

  • 如果字符串的內(nèi)容為null時(shí)忘衍,則拋出ArgumentNullException異常逾苫。
  • 如果字符串的內(nèi)容不是數(shù)字,則拋出FormatException異常枚钓。
  • 如果字符串內(nèi)容所表示的數(shù)字超出int類(lèi)型可表示的范圍铅搓,則拋出overflowException異常。

c. int.TryParse( string s, out int result)
該方式也是將數(shù)字內(nèi)容的字符串轉(zhuǎn)化為int類(lèi)型秘噪,但是比int.Parse更優(yōu)越狸吞,它不會(huì)拋出異常勉耀。如果轉(zhuǎn)換成功指煎,則返回true,轉(zhuǎn)換失敗返回false便斥。很明顯至壤,最后一個(gè)值作為輸出值,如果轉(zhuǎn)換失敗枢纠,輸出值為0像街;如果轉(zhuǎn)換成功,則輸出相應(yīng)的值晋渺。

注意: 不能用于char 類(lèi)型到int類(lèi)型的轉(zhuǎn)換镰绎,轉(zhuǎn)后的值會(huì)變成ASCII代碼,而不是你想要的木西。

匿名類(lèi)型

定義匿名類(lèi)型
定義一個(gè)匿名類(lèi)型時(shí)畴栖,需要用到 var 關(guān)鍵字和對(duì)象初始化語(yǔ)法。
var : 編譯器會(huì)在編譯時(shí)自動(dòng)生成新類(lèi)定義(我們無(wú)法在C#代碼中看到類(lèi)的名稱(chēng))八千。
初始化:它將告訴編譯器為新創(chuàng)建的類(lèi)型創(chuàng)建私有的后臺(tái)字段和(只讀的)屬性吗讶。

 var annonymousTypeInstance = new
            {
                FirstName = "Bill",
                LastName = "Gates"
            };

        
annonymousTypeInstance;.FirstName ; // "Bill";
annonymousTypeInstance.LastName ; //  "Gates";

匿名類(lèi)型本身有許多限制:

  • 你并沒(méi)有控制匿名類(lèi)型的名稱(chēng)
  • 匿名類(lèi)型繼承System.Object
  • 匿名類(lèi)型的字段和屬性總是只讀的
  • 匿名類(lèi)型不支持事件,自定義方法恋捆,自定義操作符和自定義重寫(xiě)
  • 匿名類(lèi)型是隱式封閉的(implicit sealed)
  • 匿名類(lèi)型的實(shí)體創(chuàng)建只使用默認(rèn)構(gòu)造函數(shù)
    如果照皆,我們需要快速定義一個(gè)實(shí)體的形狀,而不需要定義其功能時(shí)沸停,可以使用匿名類(lèi)型膜毁。

as

用作類(lèi)型轉(zhuǎn)換,轉(zhuǎn)換不成功時(shí),返回null瘟滨。

AppendLine()

每次在新的一行添加目標(biāo)內(nèi)容葬凳,并在末尾加上\r\n

反射 ,及其類(lèi)Type

請(qǐng)參考

DateTime

它是的定義struct類(lèi)型室奏,所以它是值類(lèi)型火焰。

ValueType值類(lèi)型

所有的值類(lèi)型都是繼承至System.ValueType

internal

修飾符,限定的是只是在同一程序集中可訪問(wèn)胧沫。

修飾符 Nullable

C#中不允許把null賦值給一個(gè)值類(lèi)型的數(shù)據(jù)昌简,但是利用Nullable修飾符可可以申明一個(gè)可空值類(lèi)型,可空值類(lèi)型和普通值類(lèi)型是一樣的绒怨,區(qū)別就是可以將一個(gè)null賦值給它纯赎。

Nullable<int> nullableInt = null;
int? nullableInt = null;//int 后面加?表示可空值類(lèi)型南蹂,  是一種特殊的值類(lèi)型犬金,它的值可以為空。
//用于給變量賦初值的時(shí)候六剥,給變量(int類(lèi)型)賦值為null晚顷,而不是0.

int ?? ://用于判斷并賦值,先判斷當(dāng)前變量是不是null疗疟,如果是就可以賦新值该默,否則跳過(guò)

可空類(lèi)型Nullable有兩個(gè)只讀屬性:

  • HasValue , 屬于bool類(lèi)型策彤,只要變量包含非空值栓袖,它的值就是true。
  • Value , 如果HasValue為true,則說(shuō)明Value包含有意義的值店诗,那么該變量訪問(wèn)Value屬性時(shí)裹刮,就會(huì)返回變量的值;如果HasValue為false庞瘸, 則訪問(wèn)Value屬性將引發(fā)InvaildOperationException捧弃。

yield return

一般情況下,yeild return 會(huì)出現(xiàn)在循環(huán)遍歷中恕洲,不適用yeild return時(shí)塔橡,代碼的執(zhí)行過(guò)程是 ,將結(jié)果集全部加載到內(nèi)存中再遍歷霜第。
使用yeild return葛家,代碼的執(zhí)行過(guò)程是,每調(diào)用一個(gè)yelid return 所在的循環(huán)時(shí)泌类,yelid return 就返回一個(gè)值回來(lái)癞谒,是“按需供給“底燎。
yeild return 能保證每次循環(huán)遍歷的時(shí)候都從前一次停止的地方開(kāi)始,因?yàn)榫幾g器會(huì)生成一個(gè)狀態(tài)機(jī)來(lái)保證迭代器的狀態(tài)弹砚。

一個(gè)循環(huán)遍歷中可以有多個(gè) yelid return 双仍,來(lái)一次性返回多個(gè)值。
一旦執(zhí)行 yelid break桌吃, 后面的代碼將不會(huì)再執(zhí)行朱沃。

SortedSet<T> 是一個(gè)排序的無(wú)重復(fù)數(shù)據(jù)的集合。

GetEnumerator()

獲取枚舉數(shù)茅诱。
枚舉數(shù)定位在集合中第一個(gè)元素前逗物,在此位置上,Current屬于未定義瑟俭,故在讀取current之前翎卓,必須調(diào)用MoveNext() 將枚舉數(shù)向前定位到集合的第一個(gè)元素,即MoveNext()
將Current設(shè)置為下一個(gè)元素摆寄。
如果MoveNext(0越過(guò)集合的末尾失暴,則枚舉數(shù)將被定位到該集合中最后一個(gè)元素的后面,則MoveNext()將返回false微饥。

int[] MyArray = { 10, 11, 12, 13 };                           //創(chuàng)建數(shù)組 
IEnumerator ie = MyArray.GetEnumerator();         //獲取枚舉數(shù) 
while (ie.MoveNext())                                             //移到下一項(xiàng) 
    Console.WriteLine((int)ie.Current);                   //獲取當(dāng)前項(xiàng)并輸入 

枚舉數(shù)的初始位置是-1,所以要想獲取第一個(gè)元素就必須執(zhí)行MoveNext()方法.
上面的代碼就是調(diào)用枚舉數(shù)的Current和MoveNext成員函數(shù)手工地遍歷數(shù)組中的元素.

using語(yǔ)句

定義一個(gè)范圍逗扒,在范圍結(jié)束時(shí)處理對(duì)象。
使用場(chǎng)景畜号,在某個(gè)代碼段中使用了類(lèi)的實(shí)例缴阎,這個(gè)代碼段結(jié)束時(shí)自動(dòng)執(zhí)行這個(gè)類(lèi)實(shí)例的Dispose方法。

using (Class1 cls1 = new Class1(), cls2 = new Class1())
{
  // the code using cls1, cls2
} // call the Dispose on cls1 and cls2

ReferenceEquals()

比較兩個(gè)對(duì)象的引用是否相等简软,即是指向統(tǒng)一內(nèi)存地址。

OrderBy()

實(shí)現(xiàn)List 升序降序述暂。

var sequence = new[] {4, 2, 1, 3, 5};
List<Student> items = sequence.OrderBy(u => u.Name).ToList();//order by name asc
List<Student> items = sequence.OrderByDescending(u => u.Name).ToList();//order by name desc

Any()

判斷序列中的任何元素是否都滿(mǎn)足條件痹升,返回bool 值。

var sequence = new[] { 1, 2, 3, 4, 5 };

 bool sequenceNotEmpty = sequence.Any();
//true, 判斷集合是否為空
 //從Any和Count的差別說(shuō)起.Any() 使用IEnumerator.GetEnumerator() 和 MoveNext() 來(lái)判斷是否集合為空畦韭,而Count()則是返回整個(gè)集合的元素個(gè)數(shù)

bool modThreeNotEmpty = sequence.Any(item => item % 3 == 0);
//true, 是否有一個(gè)一個(gè)元素滿(mǎn)足此條件

Where()

按條件篩選序列中的元素疼蛾,返回滿(mǎn)足條件的元素。

string[] sequence =
            {
                "a", "quick", "brown", "fox", "jumps", "over", "a", "lazy", "dog"
            };
 IEnumerable<string> filteredResult = sequence.Where(item => item.Length == 5);
 //子句用在查詢(xún)表達(dá)式中艺配,用于指定將在查詢(xún)表達(dá)式中返回?cái)?shù)據(jù)源中的哪些元素 ,用作篩選
C#中過(guò)濾使用 Where() 擴(kuò)展

int[] data = { 46, 74, 20, 37, 98, 93, 98, 48, 33, 15 };
int[] result = data.Where(n => n % 3 == 0).ToArray();

注意:Where() 的結(jié)果即不是數(shù)組也不是 List察郁,需要通過(guò) ToArray() 生成數(shù)組,或者通過(guò) ToList() 生成列表转唉。Linq 要在 ToArray() 或者 ToList() 或者其它某些操作的時(shí)候才會(huì)真正遍歷皮钠,依次執(zhí)行 Where() 參數(shù)提供的那個(gè)篩選函數(shù)。

Select()

 var sequence = new[]
            {
                new Name("Edogawa", "Conan"),
                new Name("Ogiso", "Setsuna"),
                new Name("Kirigaya", "Katsuto")
            };

IEnumerable<string> projection = sequence.Select(item => item.ToString());
// {"Edogawa Conan", "Ogiso Setsuna", "Kirigaya Katsuto" };

Take()

取前n個(gè)數(shù)赠法。

var sequence = new[] {1, 2, 3, 4, 5};

 IEnumerable<int> filteredElements = sequence.Take(3);// C#IList取前N行使用Take()方法
// {1, 2, 3};

Skip()

跳過(guò)前n個(gè)數(shù)

var sequence = new[] {1, 2, 3, 4, 5};

 IEnumerable<int> filteredElements = sequence.Skip(3);
// { 4, 5};

first()

滿(mǎn)足條件的第一個(gè)數(shù)麦轰。

 var sequence = new[] { 1, 2, 3, 4, 5 };

 int firstElement = sequence.First(); //1
 int firstEvenNumber = sequence.First(item => item % 2 ==0); // 2   

Last()

滿(mǎn)足條件的最后一個(gè)數(shù)。

var sequence = new[] { 1, 2, 3, 4, 5 };

  int lastElement = sequence.Last(); //5
 int lastEvenNumber = sequence.Last(item => item % 2 == 0);  //4

ElementAt()

第n個(gè)下標(biāo)處的元素。

 var sequence = new[] { 1, 2, 3, 4, 5 };
 int thirdElement = sequence.ElementAt(2);  //3

Count()

int totalNumber = sequence.Count(); // 5, Count 方法如果不帶參數(shù)款侵,則和 Count 屬性一樣末荐,和length一樣
int numberOfEvenNumbers = sequence.Count(item => item % 2 == 0);//2, 查詢(xún)?yōu)榕紨?shù)的個(gè)數(shù)

Min() 求序列的最大值, Max() 求序列的最小值

All()

是否序列中的所有元素都滿(mǎn)足條件新锈,返回bool值甲脏。

var sequence = new[] { 2, 4, 6, 8, 10 };
 bool allEvenNumbers = sequence.All(item => item % 2 == 0); //true

contains() , Concat()

A.contains("b") : A中是否包含某元素b
A.Concat(B) : A和B拼接在一起

Union()求并集妹笆, Intersect()求交集, Except()求差集

A.Union(B): 求A和B的并集剃幌,并去掉重復(fù)元素。
其他類(lèi)似

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晾浴,一起剝皮案震驚了整個(gè)濱河市负乡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脊凰,老刑警劉巖抖棘,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異狸涌,居然都是意外死亡切省,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)帕胆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朝捆,“玉大人,你說(shuō)我怎么就攤上這事懒豹≤脚蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵脸秽,是天一觀的道長(zhǎng)儒老。 經(jīng)常有香客問(wèn)我,道長(zhǎng)记餐,這世上最難降的妖魔是什么驮樊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮片酝,結(jié)果婚禮上囚衔,老公的妹妹穿的比我還像新娘。我一直安慰自己雕沿,他們只是感情好练湿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著晦炊,像睡著了一般鞠鲜。 火紅的嫁衣襯著肌膚如雪宁脊。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天贤姆,我揣著相機(jī)與錄音榆苞,去河邊找鬼。 笑死霞捡,一個(gè)胖子當(dāng)著我的面吹牛坐漏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碧信,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赊琳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了砰碴?” 一聲冷哼從身側(cè)響起躏筏,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呈枉,沒(méi)想到半個(gè)月后趁尼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猖辫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年酥泞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啃憎。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芝囤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辛萍,到底是詐尸還是另有隱情悯姊,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布叹阔,位于F島的核電站挠轴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏耳幢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一欧啤、第九天 我趴在偏房一處隱蔽的房頂上張望睛藻。 院中可真熱鬧,春花似錦邢隧、人聲如沸店印。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)按摘。三九已至包券,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炫贤,已是汗流浹背溅固。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兰珍,地道東北人侍郭。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像掠河,于是被迫代替她去往敵國(guó)和親亮元。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容