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) 在浏览有关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)
有没有特定的理由使用这个演员,或者只是在这个例子中忘记了一些"无用的"代码?
我最近在C#中开始了一个新项目,并且,当我编写一个函数中的异常时,我发现我并不知道应该使用哪个异常.
以下是许多程序中经常出现的常见异常:
您经常在程序中使用任何框架例外吗?每个.net程序员应该知道哪些例外?你什么时候使用自定义异常?
编辑:为了澄清这个话题,原来的问题更多的是"我可以抛出哪个例外?" 比"我应该抓到什么样的例外?".
我目前正在尝试在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答案因为辅助函数,这似乎是提高代码可读性的好方法.
我在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.
考虑以下代码:
class MyClass<T>
{
}
class AnotherClass : MyClass<String>
{
}
Run Code Online (Sandbox Code Playgroud)
当我查看AnotherType类型的BaseType属性时,它表示它是Object,我希望看到通用的MyClass类型.
有没有办法知道AnotherClass继承了MyClass?
编辑:问题是MyClass类型实际上是一个接口,所以它没有显示为BaseType是完全正常的.