青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評論 :: 4 Trackbacks

3.5         結構型值和類型(Structured values and types

LINQ 項目以數據為中心的程序設計格式(data-centric programming style),有些類型存在的主要目的是在結構型值之上(over a structured value)提供一個靜態的“shape”(static "shape"),這勝過同時有聲明(state)和行為(behavior)的完全成熟(full-blown)的對象。對它的邏輯結論(logical conclusion)作出這個假設(taking this premise),最常見的情形(is often the case)是所有的開發者當心(cares about)值的結構(structure of the value),對這個 shape 一個命名的類型(named type)的需要(the need for)是幾乎無用的(is of little use)。這導致(leads to)匿名類型(anonymous types)的介紹(introduction)允許新的結構(structures)給它們的初始化(initialization)定義成“inline”。

 

C# 語言里,匿名類型(anonymous types)與對象初始化的語法(object initialization syntax)是一樣的(is identical to),除了類型的名字(name of the type)被忽略(omitted)了。例于,考察下面的兩段語句:

 

object v1 = new Person {
    Name 
= "Chris Smith", Age = 31, CanCode = false
}
;

object v2 = new // note the omission of type name
    Name = "Chris Smith", Age = 31, CanCode = false
}
;

 

變量 v1 v2 都指向一個內存中的對象(in-memory object),它的 CLR 類型有三個公共的屬性(public properties):NameAge,和CanCode。它們的不同之處(differ in)是 v2 引用自(refers to)一個匿名類型(anonymous types)的實體。在 CLR 中(in CLR terms),匿名類型與任何其他類型沒有什么不同。使得匿名類型特殊(special)的是它們在你的程序開發語言中沒有特殊意義的名字(have no meaningful name)。創建一個匿名類型的實體(instances of an anonymous type)的唯一途經就是使用上面所示的語法。

 

為了允許變量引用匿名類型的實體仍然需要利用(benefit from)靜態類型(static typing),C# 介紹 var 關鍵詞時說它可以用于局部變量定義(local variable declarations)的類型名稱(type name),例于,考察下面這段合法(legal)的 C# 3.0 程序:

 

var s = "Bob";
var n 
= 32;
var b 
= true;

 

關鍵詞 var 告訴編譯器從用來初始化變量的表達式的靜態類型(static type)來推斷(infer)這個變量的類型。在這個例子中,變量 sn b 的類型分別(respectively)是 stringint bool,這段程序和下面的程序是一樣的:

 

string s = "Bob";
int    n = 32;
bool   b = true;

 

關鍵詞 var 對那些類型有特殊含義名稱(meaningful names)的變量是一個方便的工具(convenience),但是它對引用自匿名類型的實體的變量(instances of anonymous types)卻是必需的(necessity)。

 

var value = new 
  Name 
= "Chris Smith", Age = 31, CanCode = false
}
;

 

在上面的例子中,變量 value 是一個匿名類型,它的定義與下面的 C# 偽代碼(pseudo-C#:)是相等的(equivalent to):

 

internal class ??? {
  
string _Name;
  
int    _Age;
  
bool   _CanCode;

  
public string Name 
    
get return _Name; } set { _Name = value; }
  }


  
public int Age
    
get return _Age; } set { _Age = value; }
  }


  
public bool CanCode 
    
get return _CanCode; } set { _CanCode = value; }
  }

}

 

匿名類型不能被共享于(shared)跨越(across)匯編后代碼的邊界(assembly boundaries),但是編譯保證(ensures)在每段匯編代碼中(within each assembly)對被賦予的(given)成 name/type 對(name/type pairs)的屬性序列(sequence of property)最多只有一個匿名類型。

 

因為匿名類型常常被用在從一個現有的結構型值(an existing structured value)中選取它的一個或更多的成員的投影(projections)中,這樣我們就能夠簡單地在一個匿名類型的初始化(initialization of an anonymous type)中從另一個值引用(reference)域(fields)或屬性(properties)。這導致(results in)匿名類型獲取到一個屬性(property),它的名稱(name),類型(type)和值(value)都拷貝自引用的屬性或域(referenced property or field)。

 

舉例來說,下面的程序通過從其他值中結合屬性(combining properties)來創建一個新的結構性值(structured value):

 

var bob = new Person { Name = "Bob", Age = 51, CanCode = true };
var jane 
= new { Age = 29, FirstName = "Jane" };

var couple 
= new {
    Husband 
= new { bob.Name, bob.Age },
    Wife 
= new { Name = jane.FirstName, jane.Age }
}
;

int    ha = couple.Husband.Age; // ha == 51
string wn = couple.Wife.Name;   // wn == "Jane"

 

上面展示的引用域(fields)或屬性(properties)的代碼是與下面寫出的更明顯的形式(more explicit form)的一種更簡單方便的語法(is simply a convenient syntax):

 

var couple = new {
    Husband 
= new { Name = bob.Name, Age = bob.Age },
    Wife 
= new { Name = jane.FirstName, Age = jane.Age }

}
;

 

在兩種形式中(in both cases),變量 couple 都從變量 bob jane 中的 Name Age 屬性獲取了一份自己的 copy

 

匿名類型通常用于查詢的 select 語句(select clause),例于,看下面的查詢程序:

 

var expr = people.Select(p => new 
               p.Name, BadCoder 
= p.Age == 11
           }
);

foreach (var item in expr) 
  Console.WriteLine(
"{0} is a {1} coder"
                     item.Name,
                     item.BadCoder 
? "bad" : "good");

 

在這個例子中我們能夠在類型 Person 上創建一個新的投影(projection),它正確地符合(exactly matched)我們的執行代碼(processing code)所需要的形態(shape),但是仍然具有靜態類型(static type)的好處(the benefits of)。

 

 

 

待續, 錯誤難免,請批評指正,譯者Naven 2005-10-23

posted on 2005-10-24 01:05 Javen-Studio 閱讀(497) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久人人97超碰精品888| 午夜在线一区| 欧美日韩在线免费| 午夜精品www| 欧美一区二区三区男人的天堂 | 亚洲欧美日韩国产中文| 亚洲福利一区| 国产精品一区二区三区四区 | 久久成人国产精品| 欧美一区二区三区成人| 1024国产精品| 亚洲欧美日韩国产中文在线| 久久男人资源视频| 美女在线一区二区| 香蕉成人久久| 久久人体大胆视频| 最新国产成人av网站网址麻豆| 午夜精品久久久久久久蜜桃app| 国产精品久久久久久av福利软件 | 亚洲美女黄网| 国产美女在线精品免费观看| 欧美视频一区在线| 亚洲欧美区自拍先锋| 在线播放不卡| 亚洲伦伦在线| 国内偷自视频区视频综合| 最新国产成人在线观看| 国产日韩欧美麻豆| 国产精品亚发布| 美女被久久久| 91久久夜色精品国产九色| 午夜精品久久一牛影视| 亚洲桃花岛网站| 欧美一区二区三区播放老司机 | 欧美搞黄网站| 国产精品国产三级国产专区53| 亚洲欧美一区二区三区极速播放 | 亚洲全部视频| 99re这里只有精品6| 日韩亚洲欧美精品| 羞羞漫画18久久大片| 亚洲精品女av网站| 99国内精品久久| 欧美国产精品va在线观看| 一区二区三区日韩| 中日韩男男gay无套| 亚洲国产天堂久久综合| 亚洲人在线视频| 亚洲精选一区| 久久久久久久国产| 亚洲精品视频在线| 国产精品无码专区在线观看 | 久久久久一区二区| 午夜精品久久久久久久白皮肤| 久久久久在线观看| 久久偷窥视频| 久久综合九色99| 欧美激情第9页| 亚洲天堂av电影| 欧美电影免费观看| 久久久久久久波多野高潮日日 | 亚洲高清视频一区| 一区二区三区av| 依依成人综合视频| 国产精品第一区| 欧美刺激性大交免费视频| 中文亚洲欧美| 久久久精品视频成人| 亚洲国产精品久久人人爱蜜臀| 欧美精品情趣视频| 亚洲综合精品一区二区| 亚洲免费观看高清完整版在线观看熊 | 亚洲免费久久| 一本色道久久加勒比88综合| 99视频国产精品免费观看| 久久精品国产欧美亚洲人人爽| 日韩一级不卡| 久久久久久有精品国产| 伊人婷婷欧美激情| 99国产精品视频免费观看| 亚洲一区二区三区色| 亚洲国产精品尤物yw在线观看| 国产毛片精品视频| 蜜桃av综合| 亚洲一区二区在线免费观看视频| 欧美一区二区性| 欧美国产精品| 亚洲专区国产精品| 日韩视频在线观看免费| 美女网站久久| 久久免费视频网站| 欧美一区二区三区精品电影| 在线视频日韩| 亚洲激情六月丁香| 1000部国产精品成人观看| 国产日韩欧美在线看| 国产精品扒开腿爽爽爽视频| 欧美激情在线有限公司| 久久综合国产精品| 久久精品国产精品亚洲综合| 亚洲免费视频中文字幕| 在线一区二区三区四区| 亚洲日本va在线观看| 亚洲国产精品尤物yw在线观看 | 欧美在线视频免费播放| 亚洲一区二区网站| 亚洲视频在线免费观看| 亚洲视频狠狠| 亚洲一区视频在线观看视频| 宅男精品导航| 亚洲天堂网在线观看| 亚洲小视频在线观看| 一区二区国产日产| 亚洲一区亚洲二区| 亚洲影院在线观看| 性欧美暴力猛交69hd| 久久精品亚洲国产奇米99| 久久电影一区| 麻豆av一区二区三区久久| 免费成人在线视频网站| 欧美大片一区| 欧美日韩中文在线观看| 国产精品多人| 国产一区999| 亚洲第一福利视频| 亚洲精选一区二区| 亚洲图片欧洲图片日韩av| 先锋影音网一区二区| 久久九九久久九九| 欧美国产视频日韩| 夜夜嗨av一区二区三区免费区| 亚洲午夜久久久| 欧美在线免费观看| 欧美高清在线| 国产精品私拍pans大尺度在线| 国产一区自拍视频| 亚洲三级免费| 先锋影音久久| 欧美激情一区二区三区全黄| 亚洲精品视频啊美女在线直播| 亚洲免费视频网站| 每日更新成人在线视频| 欧美三区在线视频| 精品成人一区二区三区| 99国产精品国产精品久久| 销魂美女一区二区三区视频在线| 久久综合一区二区| 一区二区毛片| 玖玖玖国产精品| 国产精品三级视频| 亚洲狼人精品一区二区三区| 欧美一区二区三区免费视频| 欧美成人精品不卡视频在线观看 | 在线成人av.com| 亚洲天堂网在线观看| 久久三级福利| 亚洲无线一线二线三线区别av| 久久综合九色综合久99| 国产精品欧美日韩| 亚洲美女在线一区| 免播放器亚洲| 亚洲综合日本| 欧美日韩免费一区| 亚洲国产cao| 久久国内精品自在自线400部| 91久久精品国产91久久性色tv| 午夜性色一区二区三区免费视频| 欧美精品一区二区三区视频 | 亚洲免费网址| 亚洲二区精品| 久久久噜噜噜久久| 国产农村妇女精品一二区| 一区二区三区四区五区精品| 欧美1区2区| 久久久久久97三级| 国产欧美在线播放| 亚洲欧美网站| 亚洲一级免费视频| 欧美日韩亚洲一区二区三区在线| 亚洲国产小视频在线观看| 久久久91精品国产一区二区精品| 亚洲夜间福利| 欧美偷拍另类| 亚洲五月六月| 一本久道久久综合婷婷鲸鱼| 欧美激情精品久久久久久蜜臀 | 裸体素人女欧美日韩| 国产自产2019最新不卡| 欧美一区二视频| 亚洲欧美国产高清| 国产精品一国产精品k频道56| 亚洲欧美清纯在线制服| 一本色道久久88亚洲综合88| 欧美日韩一二三四五区| 99re6热只有精品免费观看| 亚洲国产欧美一区| 欧美日韩成人一区二区三区| 99re热这里只有精品视频| 亚洲精品免费网站| 欧美日韩亚洲综合在线|