C# 如何使用字符串数组初始化类?
我有一个脚本,可以从着色器中按名称获取属性: 在底部,我通过给属性名“Vector1_570450D5”来更改一个属性值 在本例中,有5个属性,因此我希望能够做到:C# 如何使用字符串数组初始化类?,c#,unity3d,C#,Unity3d,我有一个脚本,可以从着色器中按名称获取属性: 在底部,我通过给属性名“Vector1_570450D5”来更改一个属性值 在本例中,有5个属性,因此我希望能够做到: material.SetFloat(myProperties.Vector1_570450D5, currentValue); 或 所以我想让这个脚本带有属性executealways来创建一个只用于获取属性的编辑器脚本,然后在这个mono脚本中使用属性,就像我给出的例子一样 仅针对您的标题:您有一个列表,而不是数组;) 在用
material.SetFloat(myProperties.Vector1_570450D5, currentValue);
或
所以我想让这个脚本带有属性executealways来创建一个只用于获取属性的编辑器脚本,然后在这个mono脚本中使用属性,就像我给出的例子一样 仅针对您的标题:您有一个
列表,而不是数组;)
在用值填充它之前,您需要初始化它。您还可以与字段声明一起执行此操作:
public List<string> names = new List<string>();
如果我理解正确的话,您正在进一步寻找类似
public string this[int index] => names[i];
这将允许您直接通过
myClass[i];
而不是
myClass.names[i];
这很好用。如果我想做一些更复杂的事情,例如,我将键入myClass.1或myClass.2,其中数字1和2是从“I”变量中提取的。i、 ToString()是例如“1”“2”“3”的名称,因此,如果我键入myClass,它会将数字显示为类似myClass.1 myClass.2的属性,以便稍后在其他脚本中使用这些数字作为int或将其转换为字符串。我不想在列表myClass.names上循环,而是想直接访问属性。@bendivonim使用字典怎么样?或者你是说像public int this[int index]=>names[i]
这样您就可以使用myClass[i]
而不是myClass.names[i]代码>?第二个公共int-this[int-index]=>命名[i];我如何在清醒时的for循环中使用它?公共字符串this[int index]=>命名[i];获取错误。不,这将是MyClass
的一个属性,您实际上不会在循环中使用它。。。也许我还没有完全理解您的整个用例/目标:)
public class MyClass
{
public List<string> names = new List<string>();
public MyClass(List<string> initialNames)
{
// This creates a new List<string> copying all elements of initialNames
names = new List<string>(initialNames);
}
}
var myClass = new MyClass(names);
public string this[int index] => names[i];
myClass[i];
myClass.names[i];