小编Thi*_*ise的帖子

如何忽略Lua中函数的第一个结果?

Lua函数可以返回多个结果:

a, b, c = unpack({'one', 'two', 'three'})
Run Code Online (Sandbox Code Playgroud)

如果我对第三个返回值不感兴趣,我可以选择在调用函数时忽略它:

a, b = unpack({'one', 'two', 'three'})
Run Code Online (Sandbox Code Playgroud)

在调用函数时是否有类似的方法忽略X的第一个元素?

如果我只想要第三个返回值,我可以编写这段代码,但我想知道是否存在更清晰的代码:

_, _, c = unpack({'one', 'two', 'three'})
Run Code Online (Sandbox Code Playgroud)

lua function multiple-results

20
推荐指数
1
解决办法
5829
查看次数

为什么在与null比较时转换为对象?

在浏览有关Equals覆盖的MSDN文档时,有一点引起了我的注意.

此特定页面的示例中,进行了一些空检查,并在进行比较时将对象转换为System.Object类型:

public override bool Equals(System.Object obj)
{
    // If parameter is null return false.
    if (obj == null)
    {
        return false;
    }

    // If parameter cannot be cast to Point return false.
    TwoDPoint p = obj as TwoDPoint;
    if ((System.Object)p == null)
    {
        return false;
    }

    // Return true if the fields match:
    return (x == p.x) && (y == p.y);
}
Run Code Online (Sandbox Code Playgroud)

有没有特定的理由使用这个演员,或者只是在这个例子中忘记了一些"无用的"代码?

.net c# comparison null casting

17
推荐指数
3
解决办法
700
查看次数

每个程序员应该知道哪些框架异常?

我最近在C#中开始了一个新项目,并且,当我编写一个函数中的异常时,我发现我并不知道应该使用哪个异常.

以下是许多程序中经常出现的常见异常:

您经常在程序中使用任何框架例外吗?每个.net程序员应该知道哪些例外?你什么时候使用自定义异常?

编辑:为了澄清这个话题,原来的问题更多的是"我可以抛出哪个例外?" 比"我应该抓到什么样的例外?".

.net c# exception

11
推荐指数
1
解决办法
501
查看次数

VB6中的标志不返回正确的值

我目前正在尝试在VB6/COM项目中使用一个标志枚举.但是,当尝试从枚举中读取值时,我得到的结果不一致.

这是枚举定义:

Enum Fruits
    None = 0
    Apple = 1
    Strawberry = 2
    Lemon = 4
End Enum
Run Code Online (Sandbox Code Playgroud)

我有一个暴露属于Fruits类型属性的对象

Public Get AvailableFruits as Fruits
Run Code Online (Sandbox Code Playgroud)

应该能够读取该值的代码用于显示/隐藏标签,具体取决于枚举的每个位的值:

lblAppleAvailable.Visible = basket.AvailableFruits And Fruits.Apple
Run Code Online (Sandbox Code Playgroud)

当我执行此代码时basket.AvailableFruits = 0,我得到True作为结果.

有什么可能导致这种行为的想法吗?

编辑:

我尝试过枚举的不同值:

basket.AvailableFruits = 0
basket.AvailableFruits And Apple        // Returns True
basket.AvailableFruits And Strawberry   // Returns True
basket.AvailableFruits And Lemon        // Returns False
Run Code Online (Sandbox Code Playgroud)

作为副节点,在调试代码时,如果我将表达式放在监视表达式中,我会得到正确的值; 但是当我的代码中计算表达式时,它仍然返回True.

我尝试使用不同的检查语法:

(basket.AvailableFruits And Fruits.Apple) = Fruits.Apple
Run Code Online (Sandbox Code Playgroud)

仍然是真的时候basket.AvailableFruits = 0:-(

在测试了不同的解决方案之后,我已经能够将问题缩小到COM组件.此组件的原始编码器将指针设置为0而不是将0作为值返回,这在尝试读取值时导致问题.

我选择了FlipScript答案因为辅助函数,这似乎是提高代码可读性的好方法.

vb6 enums bitflags

7
推荐指数
1
解决办法
1541
查看次数

如何使用OleDb读取Oracle中的CLOB列?

我在Oracle 10g数据库上创建了一个具有以下结构的表:

create table myTable
(
id       number(32,0)      primary key,
myData   clob
)
Run Code Online (Sandbox Code Playgroud)

我可以在表中插入行没有任何问题,但是当我尝试使用OleDb连接从表中读取数据时,我得到一个异常.

这是我使用的代码:

using (OleDbConnection dbConnection = new OleDbConnection("ConnectionString"))
{
    dbConnection.Open();

    OleDbCommand dbCommand = dbConnection.CreateCommand();

    dbCommand.CommandText = "SELECT * FROM myTable WHERE id=?";
    dbCommand.Parameters.AddWithValue("ID", id);

    OleDbDataReader dbReader = dbCommand.ExecuteReader();
}
Run Code Online (Sandbox Code Playgroud)

异常详细信息似乎指向不受支持的数据类型:

System.Data.OleDb.OleDbException: 
Unspecified error Oracle error occurred, but error message could not be retrieved from Oracle. 
Data type is not supported.
Run Code Online (Sandbox Code Playgroud)

有谁知道如何使用OleDb连接读取这些数据?

PS:在这种情况下使用的驱动程序是Microsoft.

.net oracle oledb clob

6
推荐指数
1
解决办法
5548
查看次数

如何知道继承泛型类型的基类型?

考虑以下代码:

class MyClass<T>
{
}

class AnotherClass : MyClass<String>
{
}
Run Code Online (Sandbox Code Playgroud)

当我查看AnotherType类型的BaseType属性时,它表示它是Object,我希望看到通用的MyClass类型.

有没有办法知道AnotherClass继承了MyClass?

编辑:问题是MyClass类型实际上是一个接口,所以它没有显示为BaseType是完全正常的.

.net c# inheritance types

2
推荐指数
1
解决办法
219
查看次数