2012-12-04 61 views
-4

如何在創建表本身時使用特定名稱創建主鍵。創建表時使用特定名稱創建主鍵

我想知道我們是否可以創建主鍵作爲表名的一部分,並且同時給它一個名字。儘管對於所有有經驗的開發人員來說這看起來都很正常,但對許多開發人員來說仍然很困難

我在做什麼錯?

CREATE TABLE [dbo].[TestTable]( [ID] [int] IDENTITY(1,1) NOT NULL, [FirstName] [varchar](100) NULL) GO ALTER TABLE [dbo].[TestTable] ADD CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED ([ID] ASC) GO

感謝,馬亨德拉

+0

for:http://msdn.microsoft.com/en-us/library/ch45axte.aspx foreach:http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx – Spontifixus

+0

很多東西是不同的;他們可能會被用來做類似的事情,但可能有很多不同點,因爲有相似之處。只要查看每個人所做的事情的定義即可。 – Servy

+1

什麼是「C#asp.net?」我不熟悉任何這樣的語言。 – cdhowie

回答

4

foreach枚舉實現IEnumerableIEnumerable<T>IEnumerator,或IEnumerator<T>(或實際上其類實現一個兼容Current屬性和MoveNext()方法的對象)的任何對象。對於foreach的語法是:

foreach (type variable in enumerable) { ... } 

type是新variable變量的類型。 (如果您已經有一個現有的變量可用,則省略該類型)

循環的主體將針對可枚舉中的每個對象執行,並且迭代變量(此處爲variable)將包含每次迭代中的對象。

for是更通用的,並遵循這個模式:

for (initial-statements; loop-condition; post-iteration-actions) { 
    body 
} 

這幾乎完全等同於:

initial-statements 
while (loop-condition) { 
    body 
    post-iteration-actions 
} 

與數組打交道時,您可能會看到一個for循環,對例如:

for (int index = 0; index < array.Length; index++) { 
    Console.WriteLine(array[index]); 
} 

這是一樣的事情:

{ 
    int index = 0; 
    while (index < array.Length) { 
     Console.WriteLine(array[index]); 
     index++; 
    } 
} 

(請注意,使用foreach超過陣列是由編譯器優化,以使用類似的基於索引的迭代中,因爲這是更快的。所以枚舉數組時,這三種方法應該具有同等性能和運行時語義)


更多信息,如果你想讓它:

foreach實際上只是語法糖,並可以很容易地轉換成while循環。

foreach (object x in y) { 
    Console.WriteLine(x); 
} 

這實際上意味着:

var enumerator = y.GetEnumerator(); 
try { 
    object x; // See footnote 1 
    while (enumerator.MoveNext()) { 
     x = enumerator.Current; 
     Console.WriteLine(x); 
    } 
} finally { 
    ((IDisposable)enumerator).Dispose(); 
} 

除將enumerator變量沒有名稱,是不可見的。

這很明顯,爲什麼foreach存在。無論你今天使用它,否則你將不得不編寫這個可怕的詳細樣板代碼。 foreach照顧你的一切 - 抓取一個枚舉器,在每次迭代中測試MoveNext(),提取枚舉器的當前值,並在迭代完成後處置枚舉器。

該變量實際上是semantically declared inside of the loop, starting with C# 5。這個例子對於C#4和前輩是準確的。

0

foreach用在集合來遍歷的頂部,而for可以在任何爲同一目的而使用。

+1

實際上,任何帶迭代器的東西都可以和foreach一起使用,更具體。 –

0

的foreach使用迭代器,用於使用索引

所以

foreach(var item in myCollection) 
{ 
    Console.WriteLine(item); 
} 

for(int i = 0; i< myCollection.Count; i++) 
{ 
    Console.WriteLine(myCollection[i]); 
} 

所以,如果這些人被稱爲PrintContent功能的肉,一會帶什麼實現IEnumerable另一個參數必須有一個count屬性和實現和索引器類型的整數。當你對混合進行排序和過濾時,它會變得更加有趣,這完全取決於抽象,PrintContent不需要知道myCollection是如何實現的,只是myCollection實現了IEnumerable。