2015-09-05 81 views
0

一个结构可以像下面的代码一样在类内创建吗?什么是创建一个结构的正确方法是在类内创建有用的?和其他问题是,如果一个结构的属性必须声明与getter和setter像这样public int Strength {get;设置;}或以它在下面显示的代码中的方式是好的?一个结构体可以在类内部创建吗?

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

您的代码不是创建结构;它只是声明一个结构类型,但不创建任何这种类型的对象。是的,你可以在一个类中声明嵌套类型。这些可以是接口,类,结构,枚举和代表。

这些类型甚至可以在父类之外使用,如果它们是公共的。如果嵌套类型要访问父成员

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

:如果你的结构是公开的,你可以使用它像这样从其它类:

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

Program类中,你可以写类,那么它仍然需要对此父类型的对象的引用;即嵌套纯粹是静态的。

+0

嵌套事件?我不知道这是否可能,尽管 –

+0

事件是一种属性,可以分配一个delelegate('+ =')。这不是一种类型。它有一个委托类型。 –

+1

您忘记了**界面** :-) –

相关问题