novo operador (translation from VPE for Csharp Reference)
Usado para criar objetos e chamar construtores.Por exemplo:
Class1 obj = new Class1();
Também é usado para criar instâncias de tipos anônimo:
var query = from cust in customers
select new {Name = cust.Name, Address = cust.PrimaryAddress};
The new operador também é usado para chamar o construtor padrão para tipos de valor. Por exemplo:
int i = new int();
A demonstrativo anterior, i é inicializado para 0, que é o valor padrão para o tipo int. A demonstrativo possui o mesmo efeito que o seguinte:
int i = 0;
Para obter uma lista completa de valores padrão, consulte Tabela de valores padrão (translation from VPE for Csharp Reference).
Lembre-se de que é um erro para declarar um construtor padrão para um struct como cada valor implicitamente o tipo tem um construtor público padrão.É possível declarar construtores com parâmetros em um tipo de struct conjunto seus valores iniciais, mas isso só é necessário se os valores que não seja o padrão são obrigatórios.
São criados objetos de tipo de valor, sistema autônomo estruturas na pilha, enquanto objetos de tipo de referência, sistema autônomo sistema autônomo classes são criadas na pilha.Os dois tipos de objetos são destruídos automaticamente, mas os objetos com base nos tipos de valor são destruídos quando eles estiverem fora do escopo, enquanto os objetos com base nos tipos de referência são destruídos em um time não especificado após a última referência a eles é removida.Para tipos de referência que consomem recursos fixos, sistema autônomo grandes quantidades de memória, identificadores de arquivo ou conexões de rede, algumas vezes é desejável empregar finalização determinística para garantir que o objeto é destruído, assim que possível.Para obter mais informações, consulte usando demonstrativo (referência translation from VPE for Csharp).
The new operador não pode ser sobrecarregado.
Se o new operador falha ao alocar memória, ele lança a exceção OutOfMemoryException.
Exemplo
No exemplo a seguir, um struct objeto e um objeto de classe são criados e inicializados usando o new operador e, em seguida, valores atribuídos. O padrão e os valores atribuídos são exibidos.
struct SampleStruct
{
public int x;
public int y;
public SampleStruct(int x, int y)
{
this.x = x;
this.y = y;
}
}
class SampleClass
{
public string name;
public int id;
public SampleClass() {}
public SampleClass(int id, string name)
{
this.id = id;
this.name = name;
}
}
class ProgramClass
{
static void Main()
{
// Create objects using default constructors:
SampleStruct Location1 = new SampleStruct();
SampleClass Employee1 = new SampleClass();
// Display values:
Console.WriteLine("Default values:");
Console.WriteLine(" Struct members: {0}, {1}",
Location1.x, Location1.y);
Console.WriteLine(" Class members: {0}, {1}",
Employee1.name, Employee1.id);
// Create objects using parameterized constructors:
SampleStruct Location2 = new SampleStruct(10, 20);
SampleClass Employee2 = new SampleClass(1234, "Luciana Ramos");
// Display values:
Console.WriteLine("Assigned values:");
Console.WriteLine(" Struct members: {0}, {1}",
Location2.x, Location2.y);
Console.WriteLine(" Class members: {0}, {1}",
Employee2.name, Employee2.id);
}
}
/*
Output:
Default values:
Struct members: 0, 0
Class members: , 0
Assigned values:
Struct members: 10, 20
Class members: Luciana Ramos, 1234
*/
Observe no exemplo que o valor padrão de uma seqüência de caracteres é null. Portanto, não é exibida.
Especificação da linguagem C#
Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:
- 7.5.10 o operador new
Consulte também
Conceitos
Referência
Operador de palavras-chave (translation from VPE for Csharp Reference)
Tipos anônimo (guia de programação translation from VPE for Csharp)