2015-09-05 3 views
0

Структуру можно создать внутри класса, например, кода ниже? Каков правильный способ создания структуры полезен для внутри класса? и другой вопрос: если свойства структуры должны быть объявлены с помощью геттеров и сеттеров, подобных этой публичной int Strength {get; set;} или нормально, как показано в приведенном ниже коде?Внутри класса может быть создана структура?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace createStructs 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

     } 
     struct Coffee 
     { 
      /*properties*/ 
      public int Strength; 
      public string Bean; 
      public string CountryOfOrigin; 
      /*constructor*/ 
      public Coffee(int strength, string bean, string countryOfOrigin) 
      { 
       this.Strength = strength; 
       this.Bean = bean; 
       this.CountryOfOrigin = countryOfOrigin; 
      }   
     } 
    } 
+1

Почему бы вам просто не попробовать ...? – metadings

+1

Так как у вас есть код, почему бы вам не просто нажать F5 и посмотреть, компилируется ли он? Если да, то вы ответили на свой вопрос. Если это не так, вы ответили на свой вопрос :) – dman2306

+1

@ dman2306 для компиляции в одиночку использовать 'ctrl + shift + B' F5 запустит приложение :) –

ответ

3

Ваш код не создать на структуру; он просто объявляет тип структуры, но не создает объект такого типа. Да, вы можете объявлять вложенные типы внутри класса. Это могут быть интерфейсы, классы, структуры, перечисления и делегаты.

Эти типы могут использоваться даже вне родительского класса, если они являются общедоступными. Если ваша структура была публичной, вы можете использовать его, как это из другого класса:

Program.Coffe c = new Program.Coffee(3, "bean", "country"); 

Изнутри Program класса вы можете написать:

Coffe c = new Coffee(3, "bean", "country"); 

Если вложенный тип хочет получить доступ к членам родителя class, то он все еще нуждается в ссылке на объект этого родительского типа; т. е. вложенность является чисто статической.

+0

Вложенные события? Im не уверен, если это возможно, хотя –

+0

Событие - это своего рода свойство, которое может быть присвоено delelegate (с '+ ='). Это не тип. Он имеет тип делегата. –

+1

Вы забыли ** интерфейсы ** :-) –

Смежные вопросы