C# 错误(CS0120):方法需要对象引用
使用下面的代码,我得到以下错误,所使用的方法被记录在案。为什么该方法不接受我的字符串列表来创建新层C# 错误(CS0120):方法需要对象引用,c#,grasshopper,C#,Grasshopper,使用下面的代码,我得到以下错误,所使用的方法被记录在案。为什么该方法不接受我的字符串列表来创建新层 Error (CS0120): An object reference is required for the non-static field, method, or property 'Rhino.DocObjects.Tables.LayerTable.Add(string, System.Drawing.Color)' (line 73) 代码: 我想你需要把它改成 Rhino.DocO
Error (CS0120): An object reference is required for the non-static field, method, or property 'Rhino.DocObjects.Tables.LayerTable.Add(string, System.Drawing.Color)' (line 73)
代码:
我想你需要把它改成
Rhino.DocObjects.Tables.LayerTable.Add(x[i], ref Color.Black);
注意最后一个参数之前的ref
编辑
为了解决这个问题,你可以这样做
object ob = Color.Black; //box value
Rhino.DocObjects.Tables.LayerTable.Add(x[i], ref ob );
我想你需要把它改成
Rhino.DocObjects.Tables.LayerTable.Add(x[i], ref Color.Black);
注意最后一个参数之前的ref
编辑
为了解决这个问题,你可以这样做
object ob = Color.Black; //box value
Rhino.DocObjects.Tables.LayerTable.Add(x[i], ref ob );
按照@Tigran的建议使用ref 而且
- 确保x不为null
- 确保x中的所有字符串都有效(非空)
- 使用
按照@Tigran的建议使用ref 而且
- 确保x不为null
- 确保x中的所有字符串都有效(非空)
- 使用中的方法签名是:
这不是一种静态方法。您需要在实际的
对象上调用它,例如文档中的示例:LayerTable
partial class Examples { public static Rhino.Commands.Result AddLayer(Rhino.RhinoDoc doc) { // <snip> layer_index = doc.Layers.Add(layer_name, System.Drawing.Color.Black); // <snip> } }
部分类示例 { 公共静态Rhino.Commands.Result AddLayer(Rhino.RhinoDoc) { // 图层索引=doc.Layers.Add(图层名称、系统、绘图、颜色、黑色); // } }
在上面的示例中,
返回一个调用doc.Layers
的Add
对象。中的方法签名是: 这不是一种静态方法。您需要在实际的LayerTable
对象上调用它,例如文档中的示例:LayerTable
partial class Examples { public static Rhino.Commands.Result AddLayer(Rhino.RhinoDoc doc) { // <snip> layer_index = doc.Layers.Add(layer_name, System.Drawing.Color.Black); // <snip> } }
部分类示例 { 公共静态Rhino.Commands.Result AddLayer(Rhino.RhinoDoc) { // 图层索引=doc.Layers.Add(图层名称、系统、绘图、颜色、黑色); // } }
在上面的示例中,
返回一个doc.Layers
对象,您可以将其称为LayerTable
打开。只需在private之后添加static即可Add
private static void RunScript(List<string> x, ref object A) { for (int i = 0; i <= x.Count;i++) { Rhino.DocObjects.Tables.LayerTable.Add(x[i], Color.Black); } A = x; }
private static void RunScript(列表x,参考对象A) {
对于(inti=0;i只需在private之后添加staticprivate static void RunScript(List<string> x, ref object A) { for (int i = 0; i <= x.Count;i++) { Rhino.DocObjects.Tables.LayerTable.Add(x[i], Color.Black); } A = x; }
private static void RunScript(列表x,参考对象A) {
对于(int i=0;我非常感谢这是我得到的一组新错误:`0.Error(CS0206):属性、索引器或动态成员访问不能作为out或ref参数传递(第72行)1.Error(CS1502):与'Rhino.DocObjects.Tables.LayerTable.Add(string、System.Drawing.Color)最匹配的重载方法'有一些无效参数(第72行)2.错误(CS1615):参数2不应与'ref'关键字一起传递(第72行)`非常感谢这是我得到的一组新错误:`0.错误(CS0206):属性、索引器或动态成员访问不能作为out或ref参数传递(第72行)1.错误(CS1502):与“Rhino.DocObjects.Tables.LayerTable.Add(string,System.Drawing.Color)”匹配的最佳重载方法具有一些无效参数(第72行)。2.错误(CS1615):参数2不应与“ref”关键字一起传递(第72行)`非常感谢,我检查了所有这些,但仍然有我粘贴在@Tigran's Comments中的错误非常感谢,我检查了所有这些,但仍然有我粘贴在@Tigran's Comments中的错误非常感谢T.C.但是我如何将
与我定义为输入的字符串x列表相关联呢?我已经尝试了以下方法ng:layer_index
但出现了错误:layer_index=doc.Layers.Add(layer_name,System.Drawing.Color.Black);for(int i=0;i
名称“layer\u index”在当前上下文中不存在
和layer\u index
是它们的代码示例中使用的变量,与您的代码无关,您不应该复制它们。关键是您必须在一些layer\u name
上调用LayerTable
例如,如果您有一个添加
对象(如示例中的RhinoDoc
),那么您将调用类似doc
。但是你在这里尝试做的事情没有太多的上下文。非常感谢T.C.但是我如何将doc.Layers.Add(x[i],Color.Black)的东西
与我定义为输入的字符串x的列表联系起来呢?我尝试了以下操作:层索引
但出现了错误:层索引=doc.Layers.Add(层名称,System.Drawing.Color.Black);for(int I=0;I
名称“layer\u index”在当前上下文中不存在
和layer\u index
是它们的代码示例中使用的变量,与您的代码无关,您不应该复制它们。关键是您必须在一些layer\u name
上调用LayerTable
例如,如果您有一个添加
对象(如本例中的RhinoDoc
),那么您可以调用类似doc
。但是您在这里尝试的操作没有太多上下文。doc.Layers.Add(x[i],Color.Black)