【问题标题】:C# How to set and get items from object? [closed]C#如何从对象中设置和获取项目? [关闭]
【发布时间】:2014-10-21 18:08:38
【问题描述】:

很久以前我一直是 VB.Net 程序员,但最近我开始学习 C#。我知道 Vb.Net 共享 C# 具有的许多功能,反之亦然,因此我试图将我的类代码文件(我使用的最多)“转换/解析”为 C# 本机。但我一直面临对象的问题,因为在我看来(也许我错了)它们的结构与 Vb.Net 中的不同

对象的某些属性可能丢失或我找不到,我不知道它们的 C# 等价物是什么。现在我有这些。

Private g as object

现在,如果想向我写的对象添加/分配一个新值

g.item("exampleKey") = "exampleValue"

但是如果我在 C# 中尝试这个

private object g;
g.item("exampleKey") = "exampleValue"

最后一行给我一个错误

另一方面,如果我想用 DataTable "s" 填充 "g" 对象,我之前在填充 TableAdapter "E" 时使用过该对象

E.fill(s)

我写

g = s.NewRow

g = s.Rows(0)

在这一切之后,我开始做对象编辑

g.BeginEdit()

然后我通过执行与上面相同的操作来编辑,然后我通过执行来结束编辑

g.item("exampleKey") = "exampleValue"
g.item("exampleKey2") = "exampleValue3"
...
g.endEdit()

如果我想将“g”对象添加为 DataTable“s”的行,我会写

s.rows.add(g)

最后,如果我想用我制作的 DataTable "s" 更新 TableAdapter "E"

E.update(s)

如何在 C# 中编写相同的内容?我知道有 IEnumerables、Lists、Dictionary、IDictionary.. 等,但我不知道在我的情况下哪种方法最接近。

【问题讨论】:

  • 如果你知道如何在 vb.net 中编写它,我会说继续这样写,然后通过代码转换器运行它(网上有许多免费的 .net 语言代码转换器)。通常你喂给他们的东西效果很好,即使它不准确,它通常也足够接近,你可以知道当时发生了什么。

标签: c# asp.net .net vb.net datatable


【解决方案1】:

C# 中基于索引和键的选择器使用方括号。例如:

g["exampleKey"] = "value"; // Equivalent to VB.NET --> g.Item("exampleKey") = "value";

【讨论】:

  • 除了 C# 通常没有可见的“项目”属性,所以你只需使用“g[index]”。
  • 啊,好点子。不知道 Item 在 VB.NET 中被用作索引的等价物。错误地认为它是对象上的自定义集合属性。
【解决方案2】:

您必须关联所有源自object 的代码。所以你需要做的是实现C#的结构。需要注意的重要事项:

public class Example
{
     public Example()
     {
         // Constructor
     }

     public void Method()
     {
         // Call Method, which will perform a task.
     }

     public string Demo { get; set; } // Property
}

所以在我们的objectExample 中,您有几个项目。 Constructor 将在构造 object 时初始化。如果您不添加一个,CLR 将自动添加一个。您的 Method 将被构造来执行您选择的任务。然后是一个 Property,我现在将其作为 匿名属性

要调用此对象,您只需执行以下操作:

Example example = new Example();
example.Demo = @"Value";

您现在已经为您的属性分配了一个值,您还构建了一个object

显然这是一个演示,它不是最有用的,但与 delegate 结合使用它非常有用。希望这可以提供一些见解,但关于您的问题:

IndexKey 是用方括号[ ] 实现的。所以你需要这样做:

g.Item["ExampleKey"] = "value";
g.Item["ExampleKey"].Value = "value";

可能会因您尝试执行的操作而异。希望这会有所帮助-

【讨论】:

  • 我做的和你推荐的一样 g.Item["ExampleKey"] = "value" 我得到这个错误 "Unknown member 'Item' of 'object'" Ps: 我也试过 "item" (小写),但错误一直显示
  • 确切的错误是什么?
  • 'object' 不包含 'Item' 的定义,并且找不到接受“object”类型的第一个参数的扩展方法 'Item'(您是否缺少 using 指令或程序集引用?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多