Fragmenty kódu – odkaz schématu
Fragmenty kódu technologie IntelliSense jsou předem vytvořené části kódu, které jsou připraveny k vložení do vaší aplikace pomocí sady Visual Studio.Svou produktivitu můžete zvýšit tak, že vytvoříte fragmenty kódu, které snižují množství času stráveného zadáváním opakujícího se kódu nebo hledáním ukázek.Pomocí schématu XML fragmentů kódu technologie IntelliSense můžete vytvořit své vlastní fragmenty kódu a přidat je k fragmentům kódu, které jsou již součástí sady Visual Studio.
Elementy schématu fragmentů kódu technologie IntelliSense
Element Assembly
Určuje název sestavení, na které se odkazuje fragment kódu.
[!POZNÁMKA]
Element Assembly je podporován pouze ve fragmentech kódu jazyka Visual Basic.
Textová hodnota elementu Assembly je buď popisný textový název sestavení, například System.dll, nebo jeho silný název, například System,Version=1.0.0.1,Culture=neutral,PublicKeyToken=9b35aa323c18d4fb1.
<Assembly>
AssemblyName
</Assembly>
Nadřazený element |
Popis |
---|---|
Obsahuje informace o odkazech na sestavení vyžadovaných fragmentem kódu. |
Je vyžadována textová hodnota.Tento text určuje sestavení, na které se odkazuje fragment kódu.
Element Autor
Určuje jméno autora fragmentu kódu.Jméno uložené v elementu Author fragmentu kódu zobrazuje Správce fragmentů kódů.
<Author>
Code Snippet Author
</Author>
Nadřazený element |
Popis |
---|---|
Obsahuje obecné informace o fragmentu kódu. |
Je vyžadována textová hodnota.Tento text určuje autora fragmentu kódu.
Element Code
Poskytuje kontejner pro krátké bloky kódu.
Pro použití v textu elementu Code jsou k dispozici dvě vyhrazená slova: $end$ a $selected$.$end$ označuje umístění, na které se má přesunout kurzor po vložení fragmentu kódu.$selected$ představuje text vybraný v dokumentu, který má být do fragmentu kódu vložen při jeho vyvolání.Například uděleno fragment kódu, který obsahuje:
$selected$ is a great color.
Je-li slovo "Blue" je vybrána, když uživatel vyvolá šabloně, výsledek je:
Blue is a great color.
Nesmíte používat buď $end$ nebo $selected$ více než jednou v fragment kódu.V takovém případě je rozpoznán pouze druhou instanci.Zadaný fragment kódu, který obsahuje:
$selected$ is a great color. I love $selected$.
Pokud je vybráno slovo "Blue", výsledkem je:
is a great color. I love Blue.
Počáteční místo se zobrazí, protože je mezera mezi $selected$ a is.
Všechna ostatní klíčová slova uvozená znakem $ jsou definována dynamicky ve značkách <Literal> a <Object>.
<Code Language="Language"
Kind="method body/method decl/type decl/page/file/any"
Delimiter="Delimiter">
Code to insert
</Code>
Atribut |
Popis |
---|---|
Delimiter |
Nepovinný atribut.Určuje oddělovač použitý k označení literálů a objektů v kódu.Ve výchozím nastavení se používá oddělovač $. |
Kind |
Nepovinný atribut.Určuje druh kódu, který fragment kódu obsahuje, a umístění, do kterého musí být fragment kódu vložen, aby jej bylo možné zkompilovat.K dispozici jsou hodnoty method body, method decl, type decl, file a any. |
Language |
Požadovaný atribut.Určuje jazyk fragmentu kódu. |
Hodnota atributu Kind |
Popis |
---|---|
method body |
Určuje, že fragment kódu je tělo metody, a proto musí být vložen dovnitř deklarace metody. |
method decl |
Určuje, že fragment kódu je metoda, a proto musí být vložen dovnitř třídy nebo modulu. |
type decl |
Určuje, že fragment kódu je typ, a proto musí být vložen dovnitř třídy, modulu nebo oboru názvů. |
file |
Určuje, že fragment kódu je celý soubor kódu.Tyto fragmenty kódu lze vložit samotné do souboru kódu nebo do oboru názvů. |
any |
Určuje, že fragment kódu lze vložit kamkoli.Tato značka se používá pro fragmenty kódu, které jsou nezávislé na kontextu, například pro komentáře. |
Hodnota atributu Language |
Popis |
---|---|
VB |
Identifikuje fragment kódu jazyka Visual Basic. |
CSharp |
Identifikuje fragment kódu jazyka C#. |
CPP |
Identifikuje fragment kódu jazyka C++. |
XML |
Identifikuje fragment kódu jazyka XML. |
JavaScript |
Identifikuje fragment kódu jazyka JavaScript. |
SQL |
Identifikuje fragment kódu jazyka SQL. |
HTML |
Identifikuje fragment kódu jazyka HTML. |
Nadřazený element |
Popis |
---|---|
Obsahuje odkazy, direktivy import, deklarace a kód fragmentu kódu. |
Je vyžadována textová hodnota.Tento text určuje kód spolu s literály a objekty, které lze použít při vložení tohoto fragmentu kódu do projektu.
Element CodeSnippet
Umožňuje zadat záhlaví a jeden nebo více fragmentů kódu technologie IntelliSense, které lze vložit do souborů kódu sady Visual Studio.
<CodeSnippet Format="x.x.x">
<Header>... </Header>
<Snippet>... </Snippet>
</CodeSnippet>
Atribut |
Popis |
---|---|
Format |
Požadovaný atribut.Určuje verzi schématu fragmentu kódu.Atribut Format musí být řetězec, který používá syntaxi x.x.x, kde každé písmeno „x“ představuje číselnou hodnotu čísla verze.Sada Visual Studio bude ignorovat fragmenty kódu s atributy Format, kterým nerozumí. |
Podřízený element |
Popis |
---|---|
Požadovaný element.Obsahuje obecné informace o fragmentu kódu.Fragment kódu musí obsahovat právě jeden element Header. |
|
Požadovaný element.Obsahuje kód, který bude vložen sadou Visual Studio.Fragment kódu musí obsahovat právě jeden element Snippet. |
Nadřazený element |
Popis |
---|---|
Kořenový element schématu XML fragmentu kódu |
Element CodeSnippets
Seskupuje elementy CodeSnippet.Element CodeSnippets je kořenový element schématu XML fragmentu kódu.
<CodeSnippets>
<CodeSnippet>... </CodeSnippet>
</CodeSnippets>
Podřízený element |
Popis |
---|---|
Volitelný element.Nadřazený element pro všechna data fragmentu kódu.Element CodeSnippets nemusí obsahovat žádný element CodeSnippet nebo může obsahovat několik těchto elementů. |
Element Declarations
Určuje literály a objekty tvořící části fragmentu kódu, které lze upravovat.
<Declarations>
<Literal>... </Literal>
<Object>... </Object>
</Declarations>
Podřízený element |
Popis |
---|---|
Volitelný element.Definuje literály fragmentu kódu, které lze upravovat.Element Declarations nemusí obsahovat žádný element Literal nebo může obsahovat několik těchto elementů. |
|
Volitelný element.Definuje objekty fragmentu kódu, které lze upravovat.Element Declarations nemusí obsahovat žádný element Object nebo může obsahovat několik těchto elementů. |
Nadřazený element |
Popis |
---|---|
Obsahuje odkazy, direktivy import, deklarace a kód fragmentu kódu. |
Element Default
Určuje výchozí hodnotu literálu nebo objektu pro fragment kódu technologie IntelliSense.
<Default>
Default value
</Default>
Nadřazený element |
Popis |
---|---|
Definuje pole literálu fragmentu kódu, která lze upravovat. |
|
Definuje pole objektu fragment kódu, která lze upravovat. |
Je vyžadována textová hodnota.Tento text určuje výchozí hodnotu literálu nebo objektu, pomocí níž budou naplněna pole fragmentu kódu, která lze upravovat.
Element Description
Určuje popisné informace o obsahu fragmentu kódu technologie IntelliSense.
<Description>
Code Snippet Description
</Description>
Nadřazený element |
Popis |
---|---|
Obsahuje obecné informace o fragmentu kódu. |
Je vyžadována textová hodnota.Tento text popisuje fragment kódu.
Element Function
Určuje funkci, která se má provést, když literál nebo objekt získá fokus v sadě Visual Studio.
[!POZNÁMKA]
Element Function je podporován pouze ve fragmentech kódu jazyka Visual C#.
<Function>
FunctionName
</Function>
Nadřazený element |
Popis |
---|---|
Definuje pole literálu fragmentu kódu, která lze upravovat. |
|
Definuje pole objektu fragment kódu, která lze upravovat. |
Je vyžadována textová hodnota.Tento text určuje funkci, která se má provést, když pole literálu nebo objektu získá fokus v sadě Visual Studio.
Element Header
Určuje obecné informace o fragmentu kódu technologie IntelliSense.
<Header>
<Title>... </Title>
<Author>... </Author>
<Description>... </Description>
<HelpUrl>... </HelpUrl>
<SnippetTypes>... </SnippetTypes>
<Keywords>... </Keywords>
<Shortcut>... </Shortcut>
</Header>
Podřízený element |
Popis |
---|---|
Volitelný element.Jméno osoby nebo společnosti, která fragment kódu vytvořila.Element Header nemusí obsahovat žádný element Author nebo může obsahovat jeden tento element. |
|
Volitelný element.Popis fragmentu kódu.Element Header nemusí obsahovat žádný element Description nebo může obsahovat jeden tento element. |
|
Volitelný element.Adresa URL s dalšími informacemi o fragmentu kódu.Element Header nemusí obsahovat žádný element HelpURL nebo může obsahovat jeden tento element.
|
|
Volitelný element.Seskupuje elementy Keyword.Element Header nemusí obsahovat žádný element Keywords nebo může obsahovat jeden tento element. |
|
Volitelný element.Určuje textovou zkratku, pomocí níž lze fragment kódu vložit.Element Header nemusí obsahovat žádný element Shortcut nebo může obsahovat jeden tento element. |
|
Volitelný element.Seskupuje elementy SnippetType.Element Header nemusí obsahovat žádný element SnippetTypes nebo může obsahovat jeden tento element.Pokud nejsou uvedeny žádné elementy SnippetTypes, je fragment kódu vždy platný. |
|
Požadovaný element.Popisný název fragmentu kódu.Element Header musí obsahovat právě jeden element Title. |
Nadřazený element |
Popis |
---|---|
Nadřazený element pro všechna data fragmentu kódu. |
Element HelpUrl
Určujte adresu URL s dalšími informacemi o fragmentu kódu.
[!POZNÁMKA]
Sada Visual Studio element HelpUrl nepoužívá.Tento element je součástí schématu XML fragmentu kódu technologie IntelliSense a jakékoli fragmenty kódu, které tento element obsahují, budou úspěšně ověřeny, ale hodnota elementu nebude nikdy použita.
<HelpUrl>
www.microsoft.com
</HelpUrl>
Nadřazený element |
Popis |
---|---|
Obsahuje obecné informace o fragmentu kódu. |
Textová hodnota je volitelná.Tento text určuje adresu URL, na níž naleznete další informace o fragmentu kódu.
Element ID
Určuje jedinečný identifikátor pro element Literal nebo Object.Žádné dva literály nebo objekty ve stejném fragmentu kódu nesmí mít ve svých elementech ID stejnou textovou hodnotu. Literály a objekty nesmí obsahovat element ID, jehož hodnota je end.Hodnota $end$ je vyhrazena a používá se k označení umístění, na které má přejít kurzor po vložení fragmentu kódu.
<ID>
Unique Identifier
</ID>
Nadřazený element |
Popis |
---|---|
Definuje pole literálu fragmentu kódu, která lze upravovat. |
|
Definuje pole objektu fragment kódu, která lze upravovat. |
Je vyžadována textová hodnota.Tento text určuje jedinečný identifikátor pro objekt nebo literál.
Element Import
Určuje naimportované obory názvů používané fragmentem kódu technologie IntelliSense.
[!POZNÁMKA]
Element Import je podporován pouze pro projekty jazyka Visual Basic.
<Import>
<Namespace>... </Namespace>
</Import>
Podřízený element |
Popis |
---|---|
Požadovaný element.Určuje obor názvů používaný fragmentem kódu.Element Import musí obsahovat právě jeden element Namespace. |
Nadřazený element |
Popis |
---|---|
Element pro seskupení elementů Import |
Element Imports
Seskupuje jednotlivé elementy Import.
[!POZNÁMKA]
Element Imports je podporován pouze pro projekty jazyka Visual Basic.
<Imports>
<Import>... </Import>
<Imports>
Podřízený element |
Popis |
---|---|
Volitelný element.Obsahuje naimportované obory názvů pro fragment kódu.Element Imports nemusí obsahovat žádný element Import nebo může obsahovat několik těchto elementů. |
Nadřazený element |
Popis |
---|---|
Obsahuje odkazy, direktivy import, deklarace a kód fragmentu kódu. |
Element Keyword
Určuje vlastní klíčové slovo pro fragment kódu.Klíčová slova fragmentů kódu používá sada Visual Studio a představují standardní způsob pro online poskytovatele obsahu, jak přidávat vlastní klíčová slova pro vyhledávání nebo kategorizaci.
<Keyword>
Code Snippet Keyword
</Keyword>
Nadřazený element |
Popis |
---|---|
Seskupuje jednotlivé elementy Keyword. |
Je vyžadována textová hodnota.Klíčové slovo fragmentu kódu.
Element Keyword
Seskupuje jednotlivé elementy Keyword.Klíčová slova fragmentů kódu používá sada Visual Studio a představují standardní způsob pro online poskytovatele obsahu, jak přidávat vlastní klíčová slova pro vyhledávání nebo kategorizaci.
<Keywords>
<Keyword>... </Keyword>
<Keyword>... </Keyword>
<Keywords>
Podřízený element |
Popis |
---|---|
Volitelný element.Obsahuje jednotlivá klíčová slova pro fragment kódu.Element Keywords nemusí obsahovat žádný element Keyword nebo může obsahovat několik těchto elementů. |
Nadřazený element |
Popis |
---|---|
Obsahuje obecné informace o fragmentu kódu. |
Element Literal
Definuje literály fragmentu kódu, které lze upravovat.Element Literal se používá k určení toho, čím se nahradí část kódu, která je ve fragmentu zcela obsažena, ale která bude po vložení fragmentu do kódu pravděpodobně upravena.Jako literály by měly být deklarovány například řetězcové literály, číselné hodnoty a některé názvy proměnných.
Literály a objekty nesmí obsahovat element ID s hodnotou selected nebo end.Hodnota $selected$ představuje text vybraný v dokumentu, který má být do fragmentu kódu vložen při jeho vyvolání.$end$ označuje umístění, na které se má přesunout kurzor po vložení fragmentu kódu.
<Literal Editable="true/false">
<ID>... </ID>
<ToolTip>... </ToolTip>
<Default>... </Default>
<Function>... </Function>
</Literal>
Atribut |
Popis |
---|---|
Editable |
Volitelný atribut typu Boolean.Určuje, zda lze literál po vložení fragmentu kódu upravit.Výchozí hodnota tohoto atributu je true. |
Podřízený element |
Popis |
---|---|
Požadovaný element.Určuje výchozí hodnotu literálu při vložení fragmentu kódu.Element Literal musí obsahovat právě jeden element Default. |
|
Volitelný element.Určuje funkci, která se má provést, když literál získá fokus v sadě Visual Studio.Element Literal nemusí obsahovat žádný element Function nebo může obsahovat jeden tento element. |
|
Požadovaný element.Určuje jedinečný identifikátor literálu.Element Literal musí obsahovat právě jeden element ID. |
|
Volitelný element.Popisuje očekávanou hodnotu a použití literálu.Element Literal nemusí obsahovat žádný element Tooltip nebo může obsahovat jeden tento element. |
Nadřazený element |
Popis |
---|---|
Obsahuje literály a objekty fragmentu kódu, které lze upravovat. |
Element Namespace
Určuje obor názvů, který musí být naimportován, aby bylo možné fragment kódu zkompilovat a spustit.Obor názvů zadaný v elementu Namespace je automaticky přidán do příkazu Imports na začátku kódu, pokud ještě neexistuje.
[!POZNÁMKA]
Element Namespace je podporován pouze pro projekty jazyka Visual Basic.
<Namespace>
Namespace
</Namespace>
Nadřazený element |
Popis |
---|---|
Naimportuje zadaný obor názvů. |
Je vyžadována textová hodnota.Tento text určuje obor názvů, o kterém fragment kódu předpokládá, že bude naimportován.
Element Object
Definuje objekty fragmentu kódu, které lze upravovat.Element Object slouží k identifikaci položky, kterou fragment kódu požaduje, ale která je pravděpodobně definována mimo samotný fragment kódu.Jako objekty by měly být deklarovány například ovládací prvky modelu Windows Forms, ovládací prvky technologie ASP.NET nebo instance typů.Deklarace objektů vyžadují, aby byl zadán typ, k čemuž slouží element Type.
<Object Editable="true/false">
<ID>... </ID>
<Type>... </Type>
<ToolTip>... </ToolTip>
<Default>... </Default>
<Function>... </Function>
</Object>
Atribut |
Popis |
---|---|
Editable |
Volitelný atribut typu Boolean.Určuje, zda lze literál po vložení fragmentu kódu upravit.Výchozí hodnota tohoto atributu je true. |
Podřízený element |
Popis |
---|---|
Požadovaný element.Určuje výchozí hodnotu literálu při vložení fragmentu kódu.Element Literal musí obsahovat právě jeden element Default. |
|
Volitelný element.Určuje funkci, která se má provést, když literál získá fokus v sadě Visual Studio.Element Literal nemusí obsahovat žádný element Function nebo může obsahovat jeden tento element. |
|
Požadovaný element.Určuje jedinečný identifikátor literálu.Element Literal musí obsahovat právě jeden element ID. |
|
Volitelný element.Popisuje očekávanou hodnotu a použití literálu.Element Literal nemusí obsahovat žádný element Tooltip nebo může obsahovat jeden tento element. |
|
Požadovaný element.Určuje typ objektu.Element Object musí obsahovat právě jeden element Type. |
Nadřazený element |
Popis |
---|---|
Obsahuje literály a objekty fragmentu kódu, které lze upravovat. |
Element Reference
Určuje informace o odkazech na sestavení vyžadovaných fragmentem kódu.
[!POZNÁMKA]
Element Reference je podporován pouze pro projekty jazyka Visual Basic.
<Reference>
<Assembly>... </Assembly>
<Url>... </Url>
</Reference>
Podřízený element |
Popis |
---|---|
Požadovaný element.Obsahuje název sestavení, na které se odkazuje fragment kódu.Element Reference musí obsahovat právě jeden element Assembly. |
|
Volitelný element.Obsahuje adresu URL s dalšími informacemi o odkazovaném sestavení.Element Reference nemusí obsahovat žádný element Url nebo může obsahovat jeden tento element. |
Nadřazený element |
Popis |
---|---|
Element pro seskupení elementů Reference |
Element References
Seskupuje jednotlivé elementy Reference.
[!POZNÁMKA]
Element References je podporován pouze pro projekty jazyka Visual Basic.
<References>
<Reference>... </Reference>
</References>
Podřízený element |
Popis |
---|---|
Volitelný element.Obsahuje informace o odkazech na sestavení pro fragment kódu.Element References nemusí obsahovat žádný element Reference nebo může obsahovat několik těchto elementů. |
Nadřazený element |
Popis |
---|---|
Obsahuje odkazy, direktivy import, deklarace a kód fragmentu kódu. |
Element Shortcut
Určuje textovou zkratku, pomocí níž lze fragment kódu vložit.Textová hodnota elementu Shortcut smí obsahovat pouze alfanumerické znaky, pomlčky (-) a podtržítka (_).
Upozornění |
---|
_ a – nejsou podporované znaky pro zkratky fragmentu kódu v jazyce C++. |
<Shortcut>
Shortcut Text
</Shortcut>
Nadřazený element |
Popis |
---|---|
Obsahuje obecné informace o fragmentu kódu. |
Textová hodnota je volitelná.Tento text slouží jako zkratka pro vkládání fragmentů kódu.
Element Snippet
Určuje odkazy, direktivy import, deklarace a kód fragmentu kódu.
<Snippet>
<References>... </References>
<Imports>... </Imports>
<Declarations>... </Declarations>
<Code>... </Code>
</Snippet>
Podřízený element |
Popis |
---|---|
Požadovaný element.Určuje kód, který chcete vložit do souboru dokumentace.Element Snippet musí obsahovat právě jeden element Code. |
|
Volitelný element.Určuje literály a objekty tvořící části fragmentu kódu, které lze upravovat.Element Snippet nemusí obsahovat žádný element Declarations nebo může obsahovat jeden tento element. |
|
Volitelný element.Seskupuje jednotlivé elementy Import.Element Snippet nemusí obsahovat žádný element Imports nebo může obsahovat jeden tento element. |
|
Volitelný element.Seskupuje jednotlivé elementy Reference.Element Snippet nemusí obsahovat žádný element References nebo může obsahovat jeden tento element. |
Nadřazený element |
Popis |
---|---|
Umožňuje zadat záhlaví a jeden nebo více fragmentů kódu technologie IntelliSense, které lze vložit do souborů kódu sady Visual Studio. |
Element SnippetType
Určuje, jak sada Visual Studio vloží fragment kódu.
<SnippetType>
SurroundsWith/Expansion
<SnippetType>
Nadřazený element |
Popis |
---|---|
Seskupuje elementy SnippetType. |
Textová hodnota musí být jedna z následujících hodnot:
SurroundsWith: umožňuje umístit fragment kódu kolem vybrané části kódu.
Expansion: umožňuje vložit fragment kódu na pozici kurzoru.
Refactoring: určuje, že fragment kódu je používán během refaktoringu jazyka Visual C#.Hodnotu Refactoring nelze použít ve vlastních fragmentech kódu.
Element SnippetTypes
Seskupuje jednotlivé elementy SnippetType.Pokud není element SnippetTypes zadán, lze fragment kódu vložit na libovolné místo v kódu.
<SnippetTypes>
<SnippetType>... </SnippetType>
<SnippetType>... </SnippetType>
<SnippetTypes>
Podřízený element |
Popis |
---|---|
Volitelný element.Určuje, jak sada Visual Studio vloží fragment kódu do kódu.Element SnippetTypes nemusí obsahovat žádný element SnippetType nebo může obsahovat několik těchto elementů. |
Nadřazený element |
Popis |
---|---|
Určuje obecné informace o fragmentu kódu. |
Element Title
Určuje název fragmentu kódu.Název uložený v elementu Title se zobrazuje v ovládacím prvku pro výběr fragmentu kódu a v popisu fragmentu kódu ve Správci fragmentů kódů.
<Title>
Code Snippet Title
<Title>
Nadřazený element |
Popis |
---|---|
Určuje obecné informace o fragmentu kódu. |
Je vyžadována textová hodnota.Tento text určuje název fragmentu kódu.
Element ToolTip
Popisuje očekávanou hodnotu a použití literálu nebo objektu ve fragmentu kódu. Sada Visual Studio tyto informace zobrazí v popisku při vložení fragmentu kódu do projektu.Text popisku se zobrazí po vložení fragmentu kódu po umístění ukazatele myši na literál nebo objekt.
<ToolTip>
ToolTip description
</ToolTip>
Nadřazený element |
Popis |
---|---|
Definuje pole literálu fragmentu kódu, která lze upravovat. |
|
Definuje pole objektu fragment kódu, která lze upravovat. |
Je vyžadována textová hodnota.Tento text určuje popisek přidružený k objektu nebo literálu ve fragmentu kódu.
Element Type
Určuje typ objektu.Element Object slouží k identifikaci položky, kterou fragment kódu požaduje, ale která je pravděpodobně definována mimo samotný fragment kódu.Jako objekty by měly být deklarovány například ovládací prvky modelu Windows Forms, ovládací prvky technologie ASP.NET nebo instance typů.Deklarace objektů vyžadují, aby byl zadán typ, k čemuž slouží element Type.
<Type>
Type
</Type>
Nadřazený element |
Popis |
---|---|
Definuje pole objektu fragment kódu, která lze upravovat. |
Je vyžadována textová hodnota.Tento text určuje typ objektu.
Element Url
Určuje adresu URL s dalšími informacemi o odkazovaném sestavení.
[!POZNÁMKA]
Element Url je podporován pouze pro projekty jazyka Visual Basic.
<Url>
www.microsoft.com
</Url>
Nadřazený element |
Popis |
---|---|
Určuje odkazy na sestavení vyžadované fragmentem kódu. |
Je vyžadována textová hodnota.Tento text určuje adresu URL s dalšími informacemi o odkazovaném sestavení.Tato adresa URL se zobrazí, pokud odkaz nelze přidat do projektu.
Viz také
Úkoly
Návod: Vytvoření fragmentu kódu