gpt4 book ai didi

c# - 对象与对象[]

转载 作者:行者123 更新时间:2023-12-03 10:58:03 24 4
gpt4 key购买 nike

我正在寻找一个采用object[]参数的方法。但如果我传入单个值(即对象),它仍然有效。

这是作为 C# 的一部分内置的吗? objectobject[] 相同吗?

我问,因为有时我需要传递一组对象,有时我只需要一个,我想知道是否需要这样做:

public static void MergeRow(object primaryKey, object[] rowValues)
{
MergeRow(new object[]{primaryKey}, rowValues);
}

public static void MergeRow(object[] primaryKey, object[] rowValues)
{
// Rest of my method

或者第一个签名就足够了,我可以根据需要传入数组或单个对象吗?

基本上我是在问我是否需要重载这个方法?

我可以这样做吗:

public static void MergeRow(object primaryKey, object[] rowValues)
{
// Rest of my method

并传入一个对象object[]

(注意,我所说的参数是第一个参数(primaryKey)。

(注意:我使用 PrimaryKey 参数调用的方法是 SqlCeResultSet.Seek,它也采用 object[])

最佳答案

在某些情况下您可以接受参数数组,这允许您提供 1 到 n 个对象或单个数组。类似的东西

public static void MyMethod(params object[] values) { }

问题是 params 数组必须是该方法的最终参数。如果您需要在最终参数之前选择单个对象或对象数组,则必须像原始代码一样提供重载。您的代码看起来像您正在尝试使用第一个参数,因此您的答案是重载是您的 friend ,因为您无法在不使用 params 关键字的情况下传入需要对象数组的对象,并且这不是一个选项除了最后一个参数之外的任何内容。

编辑 根据附加信息,SqlCeDataReader.Seek 确实将 params 数组作为其最终参数,所以是的...您可以使用单个对象调用它、多个对象或对象数组。

这些调用都是合法的

Seek(DbSeekOptions.After, someObject);
Seek(DbSeekOptions.After, someObject, anotherObject);
Seek(DbSeekOptions.After, objectArray);
Seek(DbSeekOptions.After);

关于c# - 对象与对象[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com