C# 可以在struct中声明对象类型吗 我对C++背景很陌生,我正在努力处理C++中的数据结构,我曾经做过这样的工作,例如 struct product { int weight; double price; } apple[10];

C# 可以在struct中声明对象类型吗 我对C++背景很陌生,我正在努力处理C++中的数据结构,我曾经做过这样的工作,例如 struct product { int weight; double price; } apple[10];,c#,C#,现在问题c不允许我这样做,因为在c中,当我声明像apple这样的对象类型时,我现在无法访问重量或价格。有没有方法声明对象类型数组?如上所述,我知道我能做到 product apple = new product(); 但我收到一个错误,无法将[]索引应用于Program.product类型的表达式。 有没有一种方法可以将索引应用于数据结构?我想做的就是这样 struct product { int x; double w; } array[10]; for (int i = 0 ;

现在问题c不允许我这样做,因为在c中,当我声明像apple这样的对象类型时,我现在无法访问重量或价格。有没有方法声明对象类型数组?如上所述,我知道我能做到

product apple = new product();
但我收到一个错误,无法将[]索引应用于Program.product类型的表达式。 有没有一种方法可以将索引应用于数据结构?我想做的就是这样

struct product {
  int x;
  double w;
} array[10];

for (int i = 0 ; i < 5 ; i++ ){

array[i].x = array[i - 1].x

}
struct产品{
int x;
双w;
}数组[10];
对于(int i=0;i<5;i++){
数组[i].x=数组[i-1].x
}

非常感谢您的帮助。

成员变量在C#中默认为私有变量,因此您需要在类型和名称之前添加public

要创建数组,还需要使用new关键字

public struct product 
{
  public int x;
  public double w;
}

var products = new product[10];

for (int i = 1 ; i < 5 ; i++ )
{
  products [i].x = products [i - 1].x; // beware 0-1 = -1
}
公共结构产品
{
公共int x;
公共双w;
}
var产品=新产品[10];
对于(int i=1;i<5;i++)
{
产品[i].x=产品[i-1].x;//0-1=-1
}
结构的实例是值类型,而不是引用对象的类的实例(隐藏托管指针以忘记管理它们)

这可能会帮助您:


注意.NET中<>代码>结构> /> >与<代码>类< /代码>的区别远比C++中的两个之间的区别重要得多。它们使用相同的名称,但概念不同。感谢它正是我想要的工作方式,但有时根据源代码,我会收到一个错误,即上下文关键字var可能只出现在局部变量声明或脚本模式中是的,var不能在类或结构的范围内使用。当编译器可以从赋值表达式的右侧部分推断类型时,它是局部变量的语法糖分:。